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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容