swift与objc混编

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中的类。

你可能感兴趣的:(swift与objc混编)