之前的工程代碼都是用OC的,一直想轉(zhuǎn)成swift的旷痕,但是感覺全轉(zhuǎn)不太靠譜碳锈,所以決定一部分一部分慢慢轉(zhuǎn),所以需要用到OC和Swift代碼混編欺抗。
1.創(chuàng)建swift代碼售碳。
@objc public class XX : XX
{
}
@objc ,public 最好都加上,然后子類也加上比如繼承NSObject
然后就會問你是否創(chuàng)建header文件
選擇是就行了佩迟,然后自動創(chuàng)建一個$(Project_Name)-Bridging-Header.h的文件团滥,$(Project_Name)默認(rèn)是工程名字,但是也可以修改报强。如果你選擇了否或者不小心把這個文件刪了怎么辦了灸姊。
第一種就是:在SWIFT_OBJC_BRIDGING_HEADER將其選項刪除,然后新建的時候就會又提示讓你建立秉溉。
第二種就是:建立一個新的文件然后在SWIFT_OBJC_BRIDGING_HEADER力惯,將路徑輸入進(jìn)去。
這個文件的作用就是當(dāng)swift需要使用OC代碼的時候在SWIFT_OBJC_BRIDGING_HEADER文件將OC的頭文件導(dǎo)入進(jìn)去召嘶。
2.xcode自動幫你創(chuàng)建了$(Project_Name)-Swift.h文件
這個自動幫你創(chuàng)建好了父晶。然后你在OC類里面#import這個文件以后就能直接使用Swift的代碼了。
3.工程的一些配置
Packaging下面的Defines Module設(shè)置為YES
Swift Compiler - Code Generation下面的Objective-C Bridging Header,Objective-C Generated Interface Header Name比較重要的兩個路徑配置選項
一個莫名其妙的錯誤:
error:opening import file for module 'Swift':Not a directory
我只把Framework Search Path里面的libxml2去了就編譯通過了弄跌。stackoverflow里面的完整答案是:
1:簡化這個Framework Search Path只留下
$(inherited)
$(SRCROOT)
2:將libxml2去了甲喝。