zoukankan      html  css  js  c++  java
  • 适配版本

    下面举个简单的例子来说明在iOS7.0和iOS6.1(以及更低版本)之间的适配问题(用的是xcode5.0,里边有6.1和7.0两个版本的sdk)

    新建一个工程,默认的development target,base sdk以及模拟器的版本都是7.0,在AppDelegate中的didFinishLaunchingWithOptions方法里

      self.window.tintColor = [UIColor redColor];  


    然后运行,这样是没有任何错误的。接下来将development target,base sdk以及模拟器的版本都改成6.1(注意默认的xcode是没有6.1的sdk的,需要自己另外导入)。然后运行,就会报错:


    也就是说tintColor属性在iOS6.1中根本就没有,在编译时候就会出错。这时候如下加上判断语句也是没有用的,照样报错

      if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {  

        self.window.tintColor = [UIColor redColor];  

      }  


    遇见这种情况只能加上预处理语句,这样写:

      #ifdef __IPHONE_7_0  

        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {  

            self.window.tintColor = [UIColor redColor];  

        }  

      #endif  


    这样编译通过就不会报错了……这是因为在sdk6.1下的usr/include下边有一个Availability.h文件,里边定义了一大堆宏,其中关于iphone的有

    #define __IPHONE_2_0     20000  

    #define __IPHONE_2_1     20100  

    #define __IPHONE_2_2     20200  

    #define __IPHONE_3_0     30000  

    #define __IPHONE_3_1     30100  

    #define __IPHONE_3_2     30200  

    #define __IPHONE_4_0     40000  

    #define __IPHONE_4_1     40100  

    #define __IPHONE_4_2     40200  

    #define __IPHONE_4_3     40300  

    #define __IPHONE_5_0     50000  

    #define __IPHONE_5_1     50100  

    #define __IPHONE_6_0     60000  

    #define __IPHONE_6_1     60100  

    #define __IPHONE_NA      99999  /* not available */  


      在sdk7.0里多了一个

      #define __IPHONE_7_0     70000  

  • 相关阅读:
    【BZOJ1858】序列操作(SCOI2010)-线段树
    【BZOJ1858】序列操作(SCOI2010)-线段树
    【SPOJ3267】D-query-莫队算法
    【BZOJ2038】小Z的袜子(2009国家集训队)-莫队算法
    【BZOJ2038】小Z的袜子(2009国家集训队)-莫队算法
    【HDU3966】Aragorn's Story-树链剖分或LCT维护路径
    BZOJ 4569 萌萌哒
    BZOJ 2460 元素
    BZOJ 2115 Xor
    BZOJ 2750 Road
  • 原文地址:https://www.cnblogs.com/mohe/p/3627842.html
Copyright © 2011-2022 走看看