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,一般不做改動。
1.在Objective-C工程中使用Swift文件
在OC中調用的時候也OC 寫法一樣,加上 #import即可 會自動添加工程名.swift
2.在Swift中使用OC文件
在橋接文件中引入需要的頭文件,具體的使用,按照對用的Swift語法結構來寫
3.SubClass
對于自定義的類,Objective-C不能繼承來自Swift的類,但是Swift可以繼承來自OC的類
4.OC中的宏定義
在Swift中只能使用簡單的一些宏定義
5.s使用OC中的block
當然還有很多我這里沒有總結出來,希望大家在遇到需要使用的時候有哪些本文章沒有涉及的也可以告訴我,大家一起學習,一起進步。