欢迎来到天天文库
浏览记录
ID:57650273
大小:1.84 MB
页数:12页
时间:2020-08-30
《Object-C-和-Swift-混编-你要的都在这里.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Object-C和Swift混编你要的都在这里 工程:Object-C穿插Swift 那些坑: 坑一: 使用场景:Swift代码中使用OC代理 报错:type'xxxx'doesnotconformtoprotocol'xxxxDelegate' 解决:先查看OC代理是否是@require或者也没写@optional 如果是:在Swift中实现你的必须要实现代理方法否则就会报错,仍然错检查代理方法是否写的正确 坑二: 导入第三方静态库: dyld:can'tresolvesymbol__TMaC6PexKit11P
2、articipantinxxx/测试框架_swift.app/测试框架_swiftbecausedependentdylib#1couldnotbeloaded 解决如下图: 坑二解决办法.png 开始混编: 1.新建Swift文件 下一步: 这个时候就会生成三个文件一个新建的文件一个是Swift和OC之间的桥接文件:项目名称-Bridging-Header.h还有一个是隐藏文件:项目名称-Swift.h负责将Swift转成OC 2.配置工程TARGETS-->BuildingSettings-->搜pack-->修改D
3、efinesModule为YES 3.Swift和OC互调 1>OC调用Swift 在OC文件中导入头文件:#import"项目名称-Swift.h"这个头文件就是那个隐藏文件,然后用法就同OC用法一致 OC调用Swift的delegate和Block 2>Swift调用OC 需要调用的OC文件首先需要导入头文件,但不是像OC一样直接导入到当前文件,需要导入到OC和Swift桥接文件中:项目名称-Bridging-Header.h Swift调用OC的delegate和Block 点击白色区域看是否走了Block和de
4、legate方法 4.Swift和Swift互调 这里不像Swift调用OC需要先把OC的头文件导入:项目名称-Bridging-Header.h,但是需要提前声明 delegate和Block用法 SwiftTestView代码贴出来:(定义Block)importUIKit@objc(SwiftTestDelegate)protocolSwiftTestDelegate:NSObjectProtocol{funcdidReciveResult(result:NSInteger)}classSwiftTestView:UIV
5、iew{weakvardelegate:SwiftTestDelegate?overrideinit(frame:CGRect){super.init(frame:frame)backgroundColor=UIColor.blueColor()self.addGestureRecognizer(UITapGestureRecognizer.init(target:self,action:"doIt"))}requiredinit?(coderaDecoder:NSCoder){fatalError("init(coder:)hasn
6、otbeenimplemented")}funcdoIt(){delegate?.didReciveResult(1)}} Swift的代理方法: Swift的闭包使用: SwiftTestView代码贴出来:importUIKit//代理@objc(SwiftTestDelegate)protocolSwiftTestDelegate:NSObjectProtocol{funcdidReciveResult(result:NSInteger)}//闭包(Block)typealiasTestViewBlock=()->()ty
7、pealiasTestViewBlock1=(Int,Int)->StringtypealiasTestViewBlock2=(Int,Int)->VoidclassSwiftTestView:UIView{weakvardelegate:SwiftTestDelegate?vartestViewBlock:TestViewBlock!vartestViewBlock1:TestViewBlock1!vartestViewBlock2:TestViewBlock2!overrideinit(frame:CGRect){super.in
8、it(frame:frame)backgroundColor=UIColor.blueColor()self.addGestureRecognizer(UITapGestureRecognizer.init(target
此文档下载收益归作者所有