1、在原来objc的项目中增加swift文件,Xcode会询问是否配置objc的桥接头文件,默认点击“Create Bridging Header”。
2、想要在原来objc代码中用到swift文件定义的类,我们需要导入一个头文件,该头文件xcode动态创建,而且在工程文件中被隐藏起来的,而且其名字有个固定的规范。
#import“ProductModuleName-Swift.h”
ProductModuleName代表工程名字,而不是某个swift文件名。
3、如果你用Swift写的class是继承自NSObject的话,Swift会默认自动为所有的非private的类和成员加上@objc。
在xcode10.2.1&swift5环境下上面描述无效,必须要在每个方法或属性前增加@objc标记,才能在“ProductModuleName-Swift.h”头文件自动生成对应的objc属性和方法。
import Foundation
class Contact: NSObject {
@objc let name: String
@objc init(name: String) {
self.name = name
super.init()
}
@objc func doSomething() -> Void {
print("hello world!")
}
}
4、如果要在swift中调用objc的类,只需要在Xcode自动生成的X-Bridging-Header.h 中包含objc类对应的头文件则可,这样就可以直接在swift中直接使用objc中的类。
网友评论