跨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 
相關文章
相關標籤/搜索