前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift3项目升级到Swift5

Swift3项目升级到Swift5

作者头像
Light413
发布2020-04-24 17:55:50
1.2K0
发布2020-04-24 17:55:50
举报
文章被收录于专栏:我是做APP开发的

最新的Xcode11.4 已经不能运行曾经Swift3.x的代码了。 我本想用Swift5重写一遍、后来感觉重写工作量有点大,业余精力有限所以直接在原基础上升级改造。

swift的副本.png

源项目 https://www.jianshu.com/p/3228bfa3be7d

曾经Swift3写的,业余更新造成年久失修。

准备
  • Xcode 11.4
  • Xcode 10.1

源项目能在支持Swift3.xXcode 10.1中正常运行 , 所以升级步骤先在Xcode 10.1中升级到 Swift4.x , 然后在Xcode 11.4升到 Swift5.x

修改项目源码
  • Xcode 10.1中【edit】-【Convert】-【to Current Swift Syntax】

这里只转换自己的源码 , 忽略我们引入的Pod中的第三方库。转换完后有的地方可能需要手动修改,根据红叉提示修改即可。

每操作完成一步骤后,运行项目查看当前效果。肯定一堆红叉,不用怕、慢慢的它就消失了。完成后项目变为 Swift4.x

  • Xcode 11.4打开项目、重复上述操作

操作完成后项目变为 Swift5.x

修改Pod文件

首先更新本地pod仓库,修改Podfile中对应的第三方库版本,然后重新安装。

涉及到的指令操作:

代码语言:javascript
复制
//不更新本地仓库、只更新项目
pod update --verbose --no-repo-update

//更新指定的库
pod update 库名 

pod install

这一步操作简单但比较费时,可能会出现莫名其妙的中断、报错。然后重复执行,最终成功安装。

问题记录

1、创建UIColor对象方法改变 3.x :

代码语言:javascript
复制
UIColor (colorLiteralRed: 244/255.0, green: 245/255.0, blue: 246/255.0, alpha: 1)

修改为:

代码语言:javascript
复制
UIColor.init(red: 244/255.0, green: 245/255.0, blue: 246/255.0, alpha: 1) 

2、The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "DCTT" target. (in target 'DCTT')

在Swift 4之前,编译器对Objective-C自动提供了一些Swift声明。 例如,编译器会为NSObject子类的所有方法创建Objective-C入口点。 该机制称为@objc推断(@obj Inference)。

在Swift 4中,这种自动@objc推断已被废弃,因为生成所有这些Objective-C入口点有代价。 当“Swift 3 @objc Inference”设置为“On”时,它允许旧代码运行。 但是,它会提示这些需要解决的弃用警告,建议“修复”这些警告,并将设置切换到“Default”。新的Swift项目的默认为“Default”。

修改:选择Target->Build Settings,搜索Swift3,在Swift3 @objc Inference中,把On改为Off或者Defalut。

编译、运行成功,修改完成。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
  • 修改项目源码
  • 修改Pod文件
  • 问题记录
  • 编译、运行成功,修改完成。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档