Swift->Any.AnyObject.AnyClass

在 Swift 中能夠表示 “任意” 這個(gè)概念的除了Any 、AnyObject以外,還有一個(gè)AnyClass。

Any、AnyObject、AnyClass有什么區(qū)別:

Any是一個(gè)空協(xié)議集合的別名,它表示沒(méi)有實(shí)現(xiàn)任何協(xié)議,因此它可以是任何類型,包括類實(shí)例與結(jié)構(gòu)體實(shí)例。
AnyObject是一個(gè)成員為空的協(xié)議,任何對(duì)象都實(shí)現(xiàn)了這個(gè)協(xié)議。
AnyClass是AnyObject.Type的別名而已。

1.AnyObject

本身就是一個(gè)接口,而且所有的class都隱式的實(shí)現(xiàn)了這個(gè)接口,這也限制了AnyObject是只適用于Class類型的原因。

AnyObject有什么用呢?

有過(guò)Objective-C開(kāi)發(fā)經(jīng)驗(yàn)的人肯定知道id, 它可以表示任意類的實(shí)例, 編譯器不會(huì)對(duì)向聲明為 id 的變量進(jìn)行類型檢查.而 Swift為了與 Cocoa 架構(gòu)進(jìn)行協(xié)作開(kāi)發(fā),就將原來(lái)的id用 AnyObject 來(lái)進(jìn)行替代。

2.Any

既然AnyObject是只適用于Class類型 ,那swift中的所有基本類型怎么辦,這個(gè)時(shí)候呢Any就幫上忙了

Any不僅僅能夠容括class類型 ,說(shuō)得更直白一點(diǎn), 就是所有的類型都可以用Any表示, 包括基本數(shù)據(jù)類型, enum, struct, func(方法)等等.

3.AnyClass:

屬于AnyObject.Type的別名:typealias AnyClass = AnyObject .Type

表示任意類的元類型,任意類的類型都隱式遵守這個(gè)協(xié)議.

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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