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