swift @available與#available

Swift 2.0 中,引入了可用性的概念。對(duì)于函數(shù),類,協(xié)議等,可以使用@available聲明這些類型的生命周期依賴于特定的平臺(tái)和操作系統(tǒng)版本。而#available用在判斷語(yǔ)句中(if, guard, while等),在不同的平臺(tái)上做不同的邏輯

@available

用法
@available放在函數(shù)(方法),類或者協(xié)議前面。表明這些類型適用的平臺(tái)和操作系統(tǒng)??聪旅嬉粋€(gè)例子:

@available(iOS 9, *)
func myMethod() {
    // do something
}

@available(iOS 9, )必須包含至少2個(gè)特性參數(shù),其中iOS 9表示必須在 iOS 9 版本以上才可用。如果你部署的平臺(tái)包括 iOS 8 , 在調(diào)用此方法后,編譯器會(huì)報(bào)錯(cuò)。
另外一個(gè)特性參數(shù):星號(hào)(
),表示包含了所有平臺(tái),目前有以下幾個(gè)平臺(tái):
iOS
iOSApplicationExtension
OSX
OSXApplicationExtension
watchOS
watchOSApplicationExtension
tvOS
tvOSApplicationExtension
一般來(lái)講,如果沒(méi)有特殊的情況,都使用*表示全平臺(tái)。
@available(iOS 9, *)是一種簡(jiǎn)寫形式。全寫形式是@available(iOS, introduced=9.0)。introduced=9.0參數(shù)表示指定平臺(tái)(iOS)從 9.0 開(kāi)始引入該聲明。為什么可以采用簡(jiǎn)寫形式呢?當(dāng)只有introduced這樣一種參數(shù)時(shí),就可以簡(jiǎn)寫成以上簡(jiǎn)寫形式。同理:@available(iOS 8.0, OSX 10.10, *) 這樣也是可以的。表示同時(shí)在多個(gè)平臺(tái)上(iOS 8.0 及其以上;OSX 10.10及其以上)的可用性。
另外,@available還有其他一些參數(shù)可以使用,分別是:
deprecated=版本號(hào):從指定平臺(tái)某個(gè)版本開(kāi)始過(guò)期該聲明
obsoleted=版本號(hào):從指定平臺(tái)某個(gè)版本開(kāi)始廢棄(注意棄用的區(qū)別,deprecated是還可以繼續(xù)使用,只不過(guò)是不推薦了,obsoleted是調(diào)用就會(huì)編譯錯(cuò)誤)該聲明
message=信息內(nèi)容:給出一些附加信息
unavailable:指定平臺(tái)上是無(wú)效的
renamed=新名字:重命名聲明

@available(iOS, introduced: 6.0, deprecated: 8.0, message: "Manually forward viewWillTransitionToSize:withTransitionCoordinator: if necessary")
open func shouldAutomaticallyForwardRotationMethods() -> Bool
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容