适配Xcode9.0-beta与Swift4.02017-06-13 11:30 适配Xcode9.0-beta与Swift4.0
原文地址:http://blog.jiar.vip/2017/06/09/%E9%80%82%E9%85%8DXcode9-0-beta%E4%B8%8ESwift4.0/
简书地址:http://www.jianshu.com/p/1f702d59e54b
您可以通过保留原文地址或者简书地址的方式进行转载。
这几天苹果在开WWDC2017大会,期间放出了Xcode9.0-beta以及Swift4。为了响应苹果爸爸的号召,我果断下载了Xcode9.0-beta,并在项目中拉出了新的分支,准备搞事。
如何适配
Xcode9.0-beta内置的Swift版本不止一个,它同时支持Swift4.0和Swift3.2。而我们正在用的Xcode8,最高只支持Swift3.1。基于这个事实,我先拉一个Xcode9.0-beta-Swift3.2的分支,待适配好Swift3.2后,再起分支Xcode9.0-beta-Swift4.0去支持Swift4.0。
适配Swift3.2
首先,对于Swift3.2,我的理解是:既然版本命名为3.2,那么应该只是基于3.1版本上的微调(我去查Swift,查到更多的是关于Swift4.0方面的信息)。适配Swift3.2的过程中,我的项目代码不需要任何改动,唯一出问题的是一个第三方库:Eureka,报错的原因是Collection协议的sub返回值从Array变成了ArraySlice,关于这个问题,已有人在Eureka的issues中提出(#1082)。随后有人commit修复了这个问题,并开出新分支来适配Swift3.2。
最后,我在Podfile中修改pod ‘Eureka’为pod ‘Eureka’, :git =》 ‘https://github.com/xmartlabs/Eureka.git’, :branch =》 ‘swift3.2’,完成了适配Swift3.2。
由此可见,适配Swift3.2几乎是没有什么压力的,我也就看到Collection协议的sub返回值变动这个情况。
适配Swift4.0
并不是所有库都能做到及时支持Swift4.0,更何况是在现在连Xcode9也还是beta的状态,所以我们仅能做到将自己的业务代码(主工程代码)部分升级到Swift4.0,然后同时保留各种pod库在Swift3.2版本。没办法,谁叫Swift4.0也还无法做到ABI兼容呢(但愿能在Swift5之前实现吧)。至于我说的同时使用两个版本的Swift,这是没问题的,Xcode9支持在项目中同时使用Swift3.2和Swift4.0。
具体要怎么做呢?(修改Swift版本)
第一步,如下图指定主工程的Swift版本为4.0
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !