Swift語(yǔ)法新進(jìn)应结、簡(jiǎn)潔、漂亮夷都,而在實(shí)際開(kāi)發(fā)過(guò)程中产镐,Objective-C更貼近底層.對(duì)于蘋(píng)果Objective-C和Swift兩種編程語(yǔ)言不同的特點(diǎn),在現(xiàn)實(shí)開(kāi)發(fā)過(guò)程中,混編將稱為一種長(zhǎng)期的趨勢(shì).蘋(píng)果提供的Swift與Objective-C混編方案都是基于Xcode和LLVM編譯.
* 普通代碼混編:項(xiàng)目?jī)?nèi)普通代碼文件混編(.swift內(nèi)使用OC的.h和.m文件或者反過(guò)來(lái),包括.a形式項(xiàng)目的開(kāi)發(fā))九串;
* 引用外部Framework:如果你的項(xiàng)目引用一個(gè)外部提供的Framework(無(wú)論這個(gè)Framework是單一語(yǔ)言開(kāi)發(fā)還是本身就是混編的)绞佩,混編方案也有不同≈砼ィ基本上與普通代碼混編相同
普通代碼混編
? ? ? 不論是OC項(xiàng)目中混編Swift還是Swift項(xiàng)目中混編OC,當(dāng)我們第一次創(chuàng)建混編文件的時(shí)候,都會(huì)出現(xiàn)如圖(1-1)所示.
? ? ? 這個(gè)是要我們?cè)诨炀庬?xiàng)目中添加橋接文件,點(diǎn)擊Create Bridging Header 的時(shí)候,會(huì)自動(dòng)生成橋接文件(1-2)所示.當(dāng)我們不小心刪除調(diào)也沒(méi)事.我們可以手動(dòng)手動(dòng)添加這個(gè)橋接文件.不過(guò)名字必須是“ProjectName-Bridging-Header.h”頭文件(名稱組成:工程名-Bridging-Header.h)
OC調(diào)用Swift實(shí)現(xiàn)
1.查看橋接文件的路徑,如果是自動(dòng)生成的,無(wú)需考慮,如果是手動(dòng)添加的,
2.定義模塊修改為YES(雖然在簡(jiǎn)單測(cè)試過(guò)程中NO也不會(huì)出錯(cuò).但是為了以防萬(wàn)一,還是修改成YES)--注:引用第三方的時(shí)候必須開(kāi)啟
3.創(chuàng)建1個(gè)Swift文件.一個(gè)是UIViewController類,并且創(chuàng)建相應(yīng)屬性及方法, 供OC調(diào)用.如圖(1-3)
4.在OC調(diào)用Swift時(shí),首先需要導(dǎo)入頭文件.與Swift調(diào)用OC不同..我們不需要在橋接文件中做任何的操作.只需要在OC文件中添加頭文件即可,如圖(1-4)
這里我們要注意的一點(diǎn)是,頭文件的書(shū)寫(xiě)并不是橋接文件的名.而是"項(xiàng)目名-Swift.h".當(dāng)我們做到這一步的時(shí)候,很多小伙伴們就會(huì)迫不及待的調(diào)用Swift,,你會(huì)發(fā)現(xiàn),我們?cè)诰帉?xiě)代碼的時(shí)候沒(méi)有任何效果.此時(shí)你需要Command+B編譯一下程序就可以了...這時(shí)我們Command+左鍵點(diǎn)擊一下頭文件,你會(huì)跳轉(zhuǎn)到一個(gè)項(xiàng)目中并不存在,卻又真是存在的文件.他是管理你創(chuàng)建的所有Swift文件及相應(yīng)的成員.有點(diǎn)類似于Framework中暴露在外面的.h文件.如圖(1-5)
看到上圖你會(huì)發(fā)現(xiàn),用紅色框起來(lái)的部分,就是我們創(chuàng)建的Swift文件..里面有我們之前創(chuàng)建的屬性,方法,還有初始化.
通過(guò)對(duì)比1-3和1-5,我們需要注意幾點(diǎn):1: Swift中定義屬性為let的時(shí)候,轉(zhuǎn)化成OC屬性,就變成只讀屬性,不能進(jìn)行修改及賦值.所以我們需要用var來(lái)定義屬性. ?2:Swift中方法轉(zhuǎn)換成OC中方法,Swift3.0與之前的有所不同, ?3:對(duì)于有多個(gè)參數(shù)的時(shí),Swift的書(shū)寫(xiě)方式,及轉(zhuǎn)換成OC時(shí)顯示的的方式.可根據(jù)自己喜好來(lái)定.
5.OC調(diào)用Swift
Swift調(diào)用OC
第一步,第二步.與OC調(diào)用Swift一樣
3.創(chuàng)建1個(gè)OC文件.一個(gè)是UIViewController類,并且創(chuàng)建相應(yīng)屬性及方法, 供OC調(diào)用.如圖(1-6)
4.在Swift調(diào)用OC時(shí),與OC調(diào)用Swift不同.我們只需要操作橋接文件即可.把OC文件的頭文件添加到橋接文件中.
5.Swift調(diào)用OC