V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
20015jjw
V2EX  ›  问与答

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

  •  
  •   20015jjw · 2016-07-08 01:18:21 +08:00 · 2608 次点击
    这是一个创建于 2821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似 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 。不知道有没有任何办法解决...

    7 条回复    2016-07-08 09:25:51 +08:00
    SoloCompany
        1
    SoloCompany  
       2016-07-08 02:21:08 +08:00
    什么鬼
    我一个外行看着都觉得不对劲
    宏是编译开关
    怎么可以和运行时判断扯上关系
    你难不成还以为 iOS 能在运行时区编译你的代码?
    Trim21
        2
    Trim21  
       2016-07-08 02:37:13 +08:00 via Android
    @SoloCompany 楼主的意思是运行的时候能检测,但是这个时候已经 import 过了吧?
    20015jjw
        3
    20015jjw  
    OP
       2016-07-08 03:19:18 +08:00
    @SoloCompany 我要的就是编译开关啊。。。
    @Trim21 有的 lib 只能 9 所以 import 就炸
    sharkli
        4
    sharkli  
       2016-07-08 07:07:19 +08:00 via iPhone
    你这需求,必须运行时判断啊。
    haoc
        5
    haoc  
       2016-07-08 07:15:00 +08:00
    好奇,等高手解釋。 python 可以 try catch import 。不知道能不能算是 workaround
    Shane
        6
    Shane  
       2016-07-08 08:17:44 +08:00 via iPhone
    Build Phases 里设置对应的 framework 引入方式为 Optional ,默认的为 Required ,然后运行时判断有没定义对应的 Class
    20015jjw
        7
    20015jjw  
    OP
       2016-07-08 09:25:51 +08:00 via Android
    @Shane 有意思 我试试 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1037 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:32 · PVG 06:32 · LAX 15:32 · JFK 18:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.