Swift與OC混編

Swift 已推出數年,與Objective-C相比Swift的語言機制及使用簡易程度上更接地氣,也大大降低了iOS入門門檻。iOS10推出后,Xcode8也推出了更新,Xcode8下iOS版本最低適配已經變為iOS8.0,而且Swift版本也趨于穩定,從某種意義上來說,Swift的時代正式開始,替代Objective-C也只是時間問題。但是有些時候不得不使用Swift與Objective-C混編。

今天我們來看看兩者混編的時候需要注意的問題

混編無非兩種情況

  • 在Objective-C工程中使用Swift文件
  • 在Swift工程中使用Objective-C文件(這種情況居多)

混編中的兩個重要文件

1.橋接文件

橋接文件ProjectName-Bridging-Header.h,在首次創建其他文件的時候,會自動生成。如果不小心刪除后,也可以手動添加,不過名字必須是ProjectName-Bridging-Header.h頭文件(名稱組成:工程名-Bridging-Header.h),如果名字記不清也可以自己新建Header file后,在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Bridging Header配置文件路徑,這個文件主要是Swift使用OC類時使用。

2.Objective-C Generated Interface Header Name文件

這個文件是混編時,系統生成的Swift文件對應的Objective-C的頭文件,具體可以在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Generated Interface Header Name進行配置,默認文件名是工程名-Swift.h,一般不做改動。

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

在OC中調用的時候也OC 寫法一樣,加上 #import即可 會自動添加工程名.swift

OC中引入Swift文件.png
2.在Swift中使用OC文件

在橋接文件中引入需要的頭文件,具體的使用,按照對用的Swift語法結構來寫

Swift橋接文件引入OC文件.png
3.SubClass

對于自定義的類,Objective-C不能繼承來自Swift的類,但是Swift可以繼承來自OC的類

4.OC中的宏定義

在Swift中只能使用簡單的一些宏定義

Snip20170816_6.png
5.s使用OC中的block
OC中BLock定義.png
.m文件 block實現.png
swift 中實現OC的Block.png

當然還有很多我這里沒有總結出來,希望大家在遇到需要使用的時候有哪些本文章沒有涉及的也可以告訴我,大家一起學習,一起進步。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言: Swift語言出來后,可能新的項目直接使用Swift來開發,但可能在過程中會遇到一些情況,某些已用OC寫好...
    瘋狂的電腦閱讀 2,318評論 0 9
  • 概述 利用runtime特性實現iOS項目的組件化開發,是由@casatwy大神提出來的,在他的博客中具體介紹...
    Mr杰杰閱讀 1,626評論 2 9
  • 前言 Swift已推出數年,與Objective-C相比Swift的語言機制及使用簡易程度上更接地氣,大大降低了i...
    在這藍色天空下閱讀 324評論 0 2
  • swift與OC混編的總結 現在的swift開發多數會用到混編。swift和oc是通過橋接文件來實現的。無論是在o...
    玻璃瓶外的水閱讀 731評論 0 51
  • 西岳崢嶸何壯哉!黃河如絲天際來。黃河萬里觸山動,盤渦谷地秦地雷。榮光休氣紛五彩,千年一清圣人在。巨靈咆哮擘兩...
    舒紅閱讀 578評論 0 2