在ios的OC和Swift混合開發(fā)無非是2種,一種是在OC的項目中使用Swift語言開發(fā),這里就需要創(chuàng)建Swift文件(或者引用Swift寫的的第三方庫),另一種是在Swift項目中使用OC語言開發(fā),這里就需要創(chuàng)建OC文件,(或者引用OC寫的的第三方庫)
創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、惠東網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為惠東等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
首先我們在一個已有的OC的項目中,創(chuàng)建一個Swift文件
這里Xcode就會自動提示我們?nèi)纾簣D1
Would you like to configure an Objective-C bridging header?
Adding this file to ocProjectUseSwift will create a mixed Swift and Objective-C target. Would you like Xcode to automatically configure a bridging header to enable classes to be accessed by both languages?
提示我們創(chuàng)建一個橋接的頭文件,當(dāng)我點擊 “ Create? Bridging Header”,Xcode就給我們自動創(chuàng)建,自動創(chuàng)建的規(guī)則是:項目名+ "-Bridging-Header.h" 如圖2
同時在項目中創(chuàng)建一個Swift文件
然后在在 targets - Build Settings - Packaging 中設(shè)置Defines Module 為YES
設(shè)置完后開始使用,怎么在oc中使用Swift的類呢?
重點: 在文件中引用 #import "ocProjectUseSwift-Swift.h"? 記住不是我創(chuàng)建的SecondVC.swift,是“項目名-Swift.h"文件名 ,引入這個文件就引入了所有的Swift文件內(nèi)的類、方法、屬性
說明:這個文件是系統(tǒng)自動創(chuàng)建,自動添加所有我們創(chuàng)建的Swift的類的方法和屬性
前提是要在方法和屬性前面要加@objc 如圖3:
用@objc聲明好之后,在我們引用的是“項目名-Swift.h"文件名的?#import "ocProjectUseSwift-Swift.h" 內(nèi)就看到有標(biāo)記了如圖4
這里分了3塊,紅色和綠色標(biāo)記框內(nèi)是我們自己標(biāo)記的oc可用的屬性和方法,藍色框內(nèi)是系統(tǒng)自己生成的oc可以初始化方法
具體使用就在oc文件中,如圖5:
此事,在這個OC創(chuàng)建的項目中,我們創(chuàng)建的Swift文件怎么使用OC創(chuàng)建的類呢?
這里就用到我們創(chuàng)建的橋接頭文件了,在圖2中的橋接頭文件,引入OC的頭文件,如圖6
就這樣很簡單,所以Swift文件的類都可以使用這個OC文件內(nèi)的類了,使用起,和OC調(diào)用OC的類一樣,如如圖7和圖8
Swift的項目中,第一次創(chuàng)建OC的文件,此時系統(tǒng)會自動幫我們創(chuàng)建橋接頭文件,如圖9
然后就有了和圖2一樣的橋接頭文件,剩下的就和圖6一樣,在橋接頭文件內(nèi)引入頭文件,即可使用OC的類,第三方庫如果也是OC寫的,在引入的時候也自動會加這個橋接頭文件,當(dāng)然一個項目只能加一次,加過的就不需要加了
1.原生開發(fā)(Native App開發(fā)):像蓋房子一樣,先打地基然后澆地梁、房屋結(jié)構(gòu)、一磚一瓦、鋼筋水泥、電路走向等,原生APP同理:通過代碼從每個頁面、每個功能、每個效果、每個邏輯、每個步驟全部用代碼寫出來,一層層,一段段全用代碼寫出來
此種APP的數(shù)據(jù)都保存在本地,APP能及時調(diào)取,所以相應(yīng)速度及流暢性有保障
2.混合開發(fā)(HTML5開發(fā)):這個就相當(dāng)于一種框架開發(fā),說白了就是網(wǎng)頁;該模式通常由“HTML5云網(wǎng)站+APP應(yīng)用客戶端”兩部份構(gòu)成,APP應(yīng)用客戶端只需安裝應(yīng)用的框架部份,而應(yīng)用的數(shù)據(jù)則是每次打開APP的時候,去云端取數(shù)據(jù)呈現(xiàn)給手機用戶。
混合APP還有一種是套殼APP,套殼APP就是用H5的網(wǎng)頁打包成APP,雖然是APP能安裝到手機上,但是每個界面,全部是網(wǎng)頁。此種APP數(shù)據(jù)都保存在云端,用戶每次訪問都需要從云端調(diào)取全部內(nèi)容,這樣就容易導(dǎo)致反應(yīng)慢,每打開一個網(wǎng)頁或點一個按鈕都需要等半天。
混合開發(fā)的優(yōu)缺點:
優(yōu)點是:
1、開發(fā)效率高,節(jié)約時間同一套代碼Android和IOS基本都可用
2、更新和部署比較方便,不需要每次升級都要上傳到App Store進行審核了,只需要在服務(wù)器端升級就可以
3、代碼維護方便、版本更新快,降低產(chǎn)品成本
缺點是:
1、由于不能直接操控硬件有些方面性能不是很好
2、另外有技術(shù)比較新版本的兼容性比較差,還有就是即懂原生開發(fā)又懂H5開發(fā)的高端人才難找。
混合App開發(fā)是未來的趨勢,目前混合開發(fā)中使用的技術(shù)也很多,主要的混合開發(fā)技術(shù)有jQuery Mobile、React Native、Cordova、APICloud、AppCan等。雖然混合開發(fā)能夠提高效率節(jié)省成本,但也有很多的限制,除了硬件、緩存等的限制,各大平臺之間的兼容性也不足。有的也比較消耗資源。
現(xiàn)在市場上存在的幾種開發(fā)方式如下:
a.web網(wǎng)頁加殼生成APP
web網(wǎng)頁加殼生成APP的開發(fā)方式,先花幾百塊錢買個現(xiàn)成的手機網(wǎng)站模板,在加殼打包一個APP只需要5分鐘,但是做出來的效果很差,耗流量,瀏覽體驗極差,訪問速度慢等等。部分開發(fā)商利用客戶不懂,把這種5分鐘速成的東西,當(dāng)成原生態(tài)開發(fā)的APP去欺騙創(chuàng)業(yè)者。賣幾千到幾萬的價格。而創(chuàng)業(yè)者很多時候還自以為撿了便宜(問了十幾家這家最便宜)。
b.Web網(wǎng)頁+原生態(tài)混編(網(wǎng)頁部分占80%以上)
混編方式的APP效果比第一種稍好。但是如果要做出接近原生態(tài)的效果,需要不斷的優(yōu)化和改版,花的錢不比原生態(tài)少。而如果不對網(wǎng)頁和系統(tǒng)優(yōu)化,只是簡單的拼湊。那么做出來的效果和web加殼的差不多.
c.HTML5開發(fā)
成本大概是原生態(tài)APP的50%到30%,也是比較接近原生開發(fā)能達到效果的一種方式。但受到很多限制。各大平臺兼容性還不足,相對來說還處于過渡期,同時比較耗系統(tǒng)資源。在低配的手機上更卡。手機淘寶的APP目前就是HTML5+原生態(tài)混編的,相對來說在很多低配的手機上還是比較卡的。最近優(yōu)化了很多,但是早期的表現(xiàn)很不盡人意。Facebook和京東都嘗試過HTML5,同時也吃了不成熟的虧。HTML5的未來或許是美好的,但是這期間的試錯成本小公司不一定承受得起。
d.原生態(tài)開發(fā)
是目前最常用和最成熟的方式。越重視細節(jié)成本越高。一般根據(jù)具體功能要求一個APP的開發(fā)成本從幾千塊到幾千萬不等。
根據(jù)實際情況,想做一個高性能的H5 iOS應(yīng)用,那么問題來了~應(yīng)該用哪一款的混合開發(fā)框架最好?好用且后期維護也方便
如果對機械設(shè)備有需求的,請到高臻機械網(wǎng)站去了解一下。