Swift與OC混編開發(fā)以及注意點

混編分為兩種情況:

? ? ? ? 1.在Swift工程中使用Objective-C文件

????????2.在Objective-C工程中使用Swift的文件

Swift中訪問OC文件:

????????1.?添加橋接文件projectName-Bridging-Header.h

? ? ? ? ? ?橋接文件“ProjectName-Bridging-Header.h”锥忿,在首次創(chuàng)建其他文件的時候,會自動生成俯在。如果不小心刪除后成艘,也可以手動添加,不過名字必須是“ProjectName-Bridging-Header.h”頭文件(名稱組成:工程名-Bridging-Header.h)释牺。

? ? ? ? ? ?在Targets->Bulid Setting,然后搜索Swift侦副,選擇Swift Compiler-General下Objective-C Bridging Header,然后配置文件路徑豆村。

????????2.添加引用

? ? ? ? ? ? Swift中使用OC文件的時候只需要在橋接文件projectName-Bridging-Header.h中引入需要的頭文件。

????????????我們項目中對應的橋接文件為:X5mgc-Bridging-Header.h?

? ? ? ? ? ? ? ?這樣就可以在.Swift文件中訪問OC的類了脸秽,如下:

????注意點:

????????1儒老、使用第三方Framework

????????????設置:?target-->build?setting?-->Packaging?-->Defines?Module為?“Yes”;

????????????然后记餐,配置文件Target?->?Build?Phases?->?Link?Binary驮樊,添加要導入的Framework;

????????????最后片酝,還是要配置橋接文件巩剖,比如要使用?abc-lib.framework庫中的?abc.h?就要這樣配置:#import"abc-lib/abc.h";?

????????2、OC宏文件

????????????Swift中沒有宏钠怯,可以使用全局常量、全局函數(shù)代替部分宏問價

????????????Swift中是不能使用宏定義語法曙聂,但是因為命名空間的緣故晦炊,在其中,我們將原本oc中不需要接受參數(shù)的宏宁脊,定義成let常量或枚舉断国,將需要接受參數(shù)的宏定義成函數(shù)。

? ?OC中訪問Swift類:

? ? ? ? ? ? 1榆苞、首先我們創(chuàng)建一個OC項目稳衬,然后再OC項目中創(chuàng)建一個Swift類,如下:

? ? ? ? ? ? ? 如果你是第一次在工程中創(chuàng)建?Swift?類坐漏,工程會提示你是否需要創(chuàng)建?Objective-C?bridging?header薄疚,這個就是所謂的橋接文件。點擊?Create?Bridging?Header赊琳,此時會在你的工程中多出一個文件(文件命名規(guī)則是:工程名-Bridging-Header.h)

????????2街夭、在OC類中引用剛才創(chuàng)建的Swift類

????????????????在想要調用Swift代碼的類中導入Swift頭文件,這個是固定的寫法(規(guī)則是:工程名-Swift.h)躏筏,然后就可以調用我們剛才的?Swift?代碼了板丽。

注意點:

????????1、工程名-Swift.h這個文件雖然看不到趁尼,但是它是真是存在的埃碱,編譯后,你可以按住Command+單擊該文件名酥泞,就會看到具體生成的代碼砚殿。

這個是SwiftModel生成的對應OC代碼。

????????2芝囤、對于需要混編的Swift類需要添加@objc聲明或者繼承NSObject或者是NSObject的子類瓮具。否則荧飞,引入 工程名-Swift.h之后,程序找不到對應類名党。

????????3叹阔、直接拖動對應的Swift文件到工程的話,好像直接拖動添加.swift文件到工程Xcode不會添加到編譯列表中传睹,因此要注意檢查拖動的文件是否添加到了build?phase的編譯列表中耳幢。

?????????4、OC項目混編Swift的時候欧啤,如果項目沒有自動生成橋接文件(ProductName-Bridging-Header.h)睛藻,那么你一定要自己創(chuàng)建并配置好路徑。因為:沒有橋接文件會影響到你的Swift轉OC接口文件(ProductName-Swift.h)中Swift要暴露給OC生成的接口邢隧。?

? ? ? ? ? 5店印、Swift中有許多OC沒有的特性,比如倒慧,Swift有元組按摘、泛型、定義的結構體纫谅、還有特有的枚舉類型炫贤。所以,要使用的混編文件要注意Swift獨有屬性問題付秕。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末兰珍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子询吴,更是在濱河造成了極大的恐慌掠河,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猛计,死亡現(xiàn)場離奇詭異口柳,居然都是意外死亡,警方通過查閱死者的電腦和手機有滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門跃闹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毛好,你說我怎么就攤上這事望艺。” “怎么了肌访?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵找默,是天一觀的道長。 經(jīng)常有香客問我吼驶,道長惩激,這世上最難降的妖魔是什么店煞? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮风钻,結果婚禮上顷蟀,老公的妹妹穿的比我還像新娘。我一直安慰自己骡技,他們只是感情好鸣个,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著布朦,像睡著了一般囤萤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上是趴,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天涛舍,我揣著相機與錄音,去河邊找鬼唆途。 笑死富雅,一個胖子當著我的面吹牛,可吹牛的內容都是我干的窘哈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼亭敢,長吁一口氣:“原來是場噩夢啊……” “哼滚婉!你這毒婦竟也來了?” 一聲冷哼從身側響起帅刀,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤让腹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扣溺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骇窍,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年锥余,在試婚紗的時候發(fā)現(xiàn)自己被綠了腹纳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡驱犹,死狀恐怖嘲恍,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情雄驹,我是刑警寧澤佃牛,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站医舆,受9級特大地震影響俘侠,放射性物質發(fā)生泄漏象缀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一爷速、第九天 我趴在偏房一處隱蔽的房頂上張望央星。 院中可真熱鬧,春花似錦遍希、人聲如沸等曼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禁谦。三九已至,卻和暖如春废封,著一層夾襖步出監(jiān)牢的瞬間州泊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工漂洋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遥皂,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓刽漂,卻偏偏與公主長得像演训,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贝咙,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345