關于swift與oc的混編分為兩種情況:
1. 在swift項目中引入OC文件
在swift項目中使用oc
的時候需要用到橋接文件兔乞,當我們在swift
項目中第一次創(chuàng)建oc類的時候會自動創(chuàng)建一個名為:工程名-Bridging-Header.h
的文件秒裕,如果我們不小心刪除了這個文件次酌,我們只需要再創(chuàng)建一個名字為:工程名-Bridging-Header.h
的文件,或者創(chuàng)建一個任意命名的.h頭文件耗拓,然后去項目中的Target -> Build Setting -> Swift Compiler - general
修改一下Object-c Bridging Header
后面的文件路徑求摇,設置成剛才創(chuàng)建的文件路徑即可捌刮,然后在頭文件中#import我們需要引用的oc類就可以正常使用了
2.在oc項目中引入swift文件
這個就比較簡單了栖袋,只需要在要調(diào)用swift
文件的類里面按照#import "工程名-Swift.h"
就可以使用swift的類了
tips:在swift4中,并不是所有的函數(shù)都暴露給oc使用(這點跟swift3中默認暴露給oc使用有區(qū)別)正蛙,所以我們對需要暴露的函數(shù)前面手動添加@objc 來修飾督弓,這樣在oc中就可以調(diào)用swift的類了(原因是因為swift是靜態(tài)語言,在編譯的時候所有函數(shù)都被編譯乒验,編譯完成愚隧,系統(tǒng)會清空那些沒有被調(diào)用過的類,以此來減少二進制文件锻全。但是 oc是一門動態(tài)語言狂塘,方法只有在調(diào)用的時候才會知道會不會調(diào)用,所以鳄厌,我們在函數(shù)之前添加@objc來保留這個方法)