Object-C-和-Swift-混编-你要的都在这里.docx

Object-C-和-Swift-混编-你要的都在这里.docx

ID:57650273

大小:1.84 MB

页数:12页

时间:2020-08-30

Object-C-和-Swift-混编-你要的都在这里.docx_第1页
Object-C-和-Swift-混编-你要的都在这里.docx_第2页
Object-C-和-Swift-混编-你要的都在这里.docx_第3页
Object-C-和-Swift-混编-你要的都在这里.docx_第4页
Object-C-和-Swift-混编-你要的都在这里.docx_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。