WWDC之Integrating Swift With Objective-C

前言

Session將重點(diǎn)講解如何讓SwiftObjective-C兩種不同的語(yǔ)言共同工作.

內(nèi)容

讓Swift文件使用Objective-C文件的API

Swift完全支持和使用Objective-C的框架Framework;
在已有的Objective-C文件中創(chuàng)建Swift文件,Xcode會(huì)提示需要?jiǎng)?chuàng)建一個(gè)工程名-Bridging -Header.h格式的橋接頭文件,此文件用來(lái)聲明需要暴露給Swift文件使用Objective-C API的頭文件,由開(kāi)發(fā)者自己決定需要給Swift文件引用的Objective-C文件.若Xcode未出現(xiàn)此提示,也可以自動(dòng)創(chuàng)建橋接頭文件,然后在項(xiàng)目targetbuilding setting中搜索header后找到Bridging header選項(xiàng),手動(dòng)添加自己的橋接文件相對(duì)路徑.

手動(dòng)設(shè)置橋接文件路徑.png

Objective-C文件使用Swift文件的API

Swift文件里聲明的協(xié)議Protocol,如要在Objective-C文件中調(diào)用必須在協(xié)議聲明前添加@objc關(guān)鍵字;
Xcode會(huì)自動(dòng)生成頭文件用于將Swift的API暴露給Objective-C文件使用,該頭文件命名格式固定為"工程名-Swift.h",只需要先導(dǎo)入此頭文件就能使用所有Swift文件的API.

各自API相互轉(zhuǎn)換方式.png
在Objective-C框架中使用Swift

給框架Target添加Swift文件時(shí)不會(huì)提示創(chuàng)建橋接文件,但能自動(dòng)獲取到當(dāng)前框架的其他文件所有API進(jìn)行調(diào)用,這是系統(tǒng)自動(dòng)進(jìn)行的編譯優(yōu)化和處理.
Objective-C中的initWithXX方法在轉(zhuǎn)化為Swift方式,將自動(dòng)移除With,生成init(XX格式 (只針對(duì)init方法的轉(zhuǎn)換)
h文件需要引用Swift文件對(duì)象時(shí),使用@class進(jìn)行導(dǎo)入;
m文件引用Swift文件時(shí)使用固定格式FrameworkName/AppName-Swift.h導(dǎo)入自動(dòng)生成的頭文件;

總結(jié)

Objective-C代碼與Swift代碼相互交互的過(guò)程,Xcode已經(jīng)足夠強(qiáng)大能夠自動(dòng)完成具體實(shí)現(xiàn)代碼的橋接功能,這也讓開(kāi)發(fā)者能更好地使用這兩種語(yǔ)言,而不會(huì)因?yàn)閮煞N語(yǔ)言的不同語(yǔ)法和特性而糾結(jié)過(guò)多的時(shí)間.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,180評(píng)論 4 61
  • 不知從何時(shí)起,吃媽媽親手做的飯的日子少了,對(duì)大多數(shù)如同我一樣求學(xué)在外的學(xué)子來(lái)說(shuō),這逐漸變?yōu)橐环N奢侈。媽媽做的飯味道...
    不爭(zhēng)先生閱讀 1,594評(píng)論 0 1
  • 行走西域絲綢之路,古文明歷史發(fā)展的一串明珠熠熠光芒;滇黔之行,蒼山的翠綠,滾鍋的熱浪,果樹的飛瀑,自然風(fēng)光...
    龍鳳來(lái)閱讀 967評(píng)論 5 9
  • 現(xiàn)象學(xué)首先不是一些原理和體系,而是觀察人生和世界的獨(dú)特方式,也就是在體驗(yàn)對(duì)象時(shí)一同體驗(yàn)到這體驗(yàn)過(guò)程的在場(chǎng)意識(shí)方式,...
    大平安閱讀 685評(píng)論 0 49