跨iOS SDK版本编译问题

iOS开发时会考虑两种SDK版本兼容性:一个是运行时SDK版本的兼容,即已构建/已发布的APP能在不一样系统版本的用户手机上正常运行;一个是编译时SDK版本的兼容,即便用不一样版本的SDK编译项目都能正常经过。后者是开发者常常会疏忽的,由于咱们一般统一使用最新的SDK来编译项目,不多会再使用老的SDK编译项目,但为了项目的健壮和灵活,咱们应该了解一下如何保证编译时的SDK版本兼容。web

因为每一个版本的iOS SDK,苹果都会增长许多新的功能,所以会有新的类型,新的方法(因为OC的动态特征,新方法不会形成编译问题)等等,开发者会火烧眉毛的引入到已有的项目中去,可是用老的SDK编译这些新代码时,会出现找不到符号的编译错误。所以咱们应该用如下办法屏蔽这些问题。spa

  1.使用类名加载新的类型code

WKWebView* webView = [[NSClassFromString(@"WKWebView") alloc] initWithFrame:self.bounds configuration:configuration];

   2.使用版本宏区分代码blog

const BOOL IOS10_OR_LATER = ( [[[UIDevice currentDevice] systemVersion] compare:@"10.0" options:NSNumericSearch] != NSOrderedAscending );

#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000))

      if (IOS10_OR_LATER) {

          [UNUserNotificationCenter currentNotificationCenter].delegate = [AppInitializer sharedInstance];

      }

#endif 
相关文章
相关标签/搜索