有任何办法在 swift 里只在 iOS 版本>=9.0 的时候 import 么?

2016-07-08 01:18:21 +08:00
 20015jjw

类似 objective c 的以下语法:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
  // iOS 6+ code here
#else
  // Pre iOS 6 code here
#endif

我搜了一圈没找到什么在 swift 的 preprocess/debug flag 里判断 iOS 版本的,只找到了 runtime check ,但是 runtime 的时候不能 import 。不知道有没有任何办法解决...

2815 次点击
所在节点    问与答
7 条回复
SoloCompany
2016-07-08 02:21:08 +08:00
什么鬼
我一个外行看着都觉得不对劲
宏是编译开关
怎么可以和运行时判断扯上关系
你难不成还以为 iOS 能在运行时区编译你的代码?
Trim21
2016-07-08 02:37:13 +08:00
@SoloCompany 楼主的意思是运行的时候能检测,但是这个时候已经 import 过了吧?
20015jjw
2016-07-08 03:19:18 +08:00
@SoloCompany 我要的就是编译开关啊。。。
@Trim21 有的 lib 只能 9 所以 import 就炸
sharkli
2016-07-08 07:07:19 +08:00
你这需求,必须运行时判断啊。
haoc
2016-07-08 07:15:00 +08:00
好奇,等高手解釋。 python 可以 try catch import 。不知道能不能算是 workaround
Shane
2016-07-08 08:17:44 +08:00
Build Phases 里设置对应的 framework 引入方式为 Optional ,默认的为 Required ,然后运行时判断有没定义对应的 Class
20015jjw
2016-07-08 09:25:51 +08:00
@Shane 有意思 我试试 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/291027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX