OC Swift文件混编

2018-11-26  本文已影响21人  hank009

一.Swift 类可以继承 OC 类,OC 类不能继承 Swift 类。

二.Swift 和 OC 混编

 混编无非两种情况:
 1.在 OC 工程项目或者文件中使用 Swift 的文件
    当在OC文件中调用Swift文件中的类的时候,首先在OC文件中要加上 #import"ProjectName-Swift.h"(名称组成:工程名-Swift)。
    这个文件虽然在工程中看不见,但是他是真实存在的。编译后,可以按住command+单机该文件名,进入该文件查看代码。
    引入后,具体类的使用,直接anOC的方式使用即可。
 
 2.在 Swift 工程或者文件中使用 OC 的文件
     当在Swift文件中使用OC文件的时候,只需要在桥接文件(即ProjectName-Bridging-Header.h文件)中引入需要的头文件,具体使用,按照对应的Swift语法结构来即可。

三.两个文件

 1.桥接文件:
 桥接文件 "ProjectName-Bridging-Header.h",在首次创建其他文件的时候会自动生成。如果不小心删除了,也可以手动添加,不过名字必须时"ProjectName-Bridging-Header.h"头文件(名称组成:工程名-Bridging-Header.h),如果名字记不清楚,也可以自己心间HeaderFile后,在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,一般不做改动。

四.混编注意事项

 对于需要混编的Swift类添加@objc声明或继承NSObject或者NSObject的子类
 class TestClass{
   //属性
   //实现
 }
     如果要在OBjective-C类中使用TestClass类,应当使用@objc加以声明,或者将TestClass继承自NSObject或者NSObject子类,否则引入 ProductName-Swift.h之后,程序找不到对应类。
 
 使用第三方Framework
     1.设置:target -> build setting -> Packaging -> Defines Module为 “YES”;
     2.然后,配置文件 target -> build Phases -> Link Binary,添加要导入的Framework.
     3.最后,还是要配置桥接文件,比如要使用abc-lib.framework库中的abc.h,就要这样配置:#import"abc-lib/abc.h";
上一篇下一篇

猜你喜欢

热点阅读