Swift API Availability Checking

來源:互聯網
上載者:User

標籤:swift2   api availability che   xcode7   uistackview   available   

在開發的過程中,難免我們會用到新的API,如果處理不當的話,對於低於該版本的裝置在運行該應用的時候可能會奔潰,為了防止出現這種情況,我們需要在運行時判斷API是否可用。

iOS9中引進了新的View class,叫做UIStackView,它是一個View容器(可分為水平布局和垂直布局),與其他View不同的是,該View會自動管理內部view的布局,而無須編碼實現自動布局,同時細心的你會發現,在Storyboard檔案的右下角會多出一個叫做Stack的按鈕(和Align,Pin,Resolve Autolayout issues並列),:


如果你對它比較感興趣,可以點擊這裡。

由於這個類只在iOS9以後出現,為了同時兼顧iOS9以前的裝置,我們可以使用這種方法來判斷該類是否可用。

if (NSClassFromString("UIStackView") != nil) {    // UIStackView is available} else {    // UIStackView does not exist.}

通過向函數NSClassFromString傳入類名,根據返回值判斷當前環境是否支援該類。返回nil代表該類不存在,否則該類可用。該方法有一個不好的地方就是參數是字串,可能會打錯類名,比如NSClassFromString("UIStackview")。


在Swift 2以後,蘋果引進了API Availability Checking,在Xcode7項目裡如果使用到了新的API,編譯器會根據使用者指定的Deployment Target判斷該類,方法,或者屬性是否可用,如果停用話會給出一個編譯錯誤,然後你可以根據提示修正該錯誤。下面是對上面代碼的一個替換。

if #available(iOS 9.0, *) {    // UIStackView is available} else {    // Fallback on earlier versions}

參考資料:http://www.hackingwithswift.com/new-syntax-swift-2-availability-checking

參考資料:https://developer.apple.com/videos/wwdc/2015/?id=106


 


Swift API Availability Checking

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.