Xcode项目中不同Swift版本导致的问题
来源:互联网 发布:润和软件 死人 编辑:程序博客网 时间:2024/06/06 00:28
你会问同一个Xcode项目中还会用不同版本的Swift?
对!举个栗子:2年前你写了一个管理密码的App,最近你觉得有必要再写一个Today Widget插件用来便捷显示密码。
之前的代码Swift版本是3.2(假设),而最新的Widget则使用4.0
为什么不把3.2的代码升级到4.0呢?这是可以的,但是涉及到要改很多地方:
而且3.2和4.0也不是完全不兼容,只是在某些地方新旧版本会有冲突,没必要为了这一点兼容性而老项目全部升级版本。
比如说对于NSMutableAttributedString的操作,4.0之后对于属性名称的引用方式和之前有不同,无法写出3.2和4.0都能编译通过的代码。
对于3.2和4.0都会引用到的代码片段,我们必须因”版”而异,用Swift的编译宏命令做代码隔离:
#if swift(>=4.0) attrString.addAttribute(.foregroundColor, value: UIColor.red, range: range) attrString.addAttribute(.backgroundColor, value: UIColor.green, range: range) attrString.addAttributes([.shadow:keywordShadow,.verticalGlyphForm:0], range: range) #else attrString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: range) attrString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.green, range: range) attrString.addAttributes([NSShadowAttributeName:keywordShadow,NSVerticalGlyphFormAttributeName:0], range: range) #endif
以上代码在项目的公共组里的String+ext.swift文件中,该文件会同时被App和Widget项目包含使用。
使用如上所示的代码隔离,或称为选择编译使得全部项目顺利编译通过。
阅读全文
0 0
- Xcode项目中不同Swift版本导致的问题
- 如何找出Xcode中不同版本Swift的路径
- 项目版本不同导致Eclipse报错问题——关于在JDK1.7环境中,运行JDK1.8环境下编写的项目。
- 关于android studio 由于版本问题导致低版本studio项目无法导入高版本的studio的项目中。
- eclipse与idea中classpath配置路径不同导致迁移项目时的FileNotFoundException问题
- eclipse与idea中classpath配置路径不同导致迁移项目时的FileNotFoundException问题
- 项目中字符串null与null不同导致的错误
- CImg1.4.6版本与前版本的不同导致的问题
- 项目中异常退出导致的问题。
- java版本更新导致的java项目问题
- xcode来引用swift版本的protocolbuf
- Oracle中不同语言环境导致to_date出错的问题
- XCode编译cocos2dx 2.2.6版本项目的一些问题
- gcc版本不同导致的编译错误?
- Quartz因不同版本导致的异常
- react项目中,一些插件版本导致的错误
- mac安装不同版本的xcode
- Xcode 不同版本的链接地址
- JavaSE Swing开发系列(FileDialog)
- void* 与 shared_ptr的相互转换
- 生成错误消息
- Java知识点复习系列(4)
- startx提示错误:“could not open default font 'fixed'” 的解决方法
- Xcode项目中不同Swift版本导致的问题
- 符号名称和功能定义
- WSO2-IoTServer Linux配置
- Lisp解释器
- SQLException: The server time zone value ‘�й���ʱ��’ is unrecognized
- POSIX Clock
- 检测是否支持monotonic
- parseInt
- 融云红包集成文档_一切从简