OptionSet-Swift & OC(UIControlState的區(qū)別)

查看swift和OC的UIControlState寫(xiě)法,是不同的:

Swift寫(xiě)法:

public struct UIControlState : OptionSet {

public init(rawValue: UInt)

public static var normal: UIControlState { get }

public static var highlighted: UIControlState { get }

...

}

OC寫(xiě)法:

typedef NS_OPTIONS(NSUInteger, UIControlState) {

UIControlStateNormal? ? ? = 0,

UIControlStateHighlighted = 1 << 0,

...

};

OC寫(xiě)法我們調(diào)用就是 (UIControlStateNormal | UIControlStateHighlighted),Swift調(diào)用是 ([.normal,.highlighted]);OC好理解,位或運(yùn)算;但是Swift這是什么鬼呢?

查找資料后,原來(lái)還是很多東西在這里的的。

OptionSet的聲明: public protocol OptionSet : SetAlgebra, RawRepresentable;這是一份協(xié)議,繼承自SetAlgebra, RawRepresentable協(xié)議;實(shí)現(xiàn)了OptionSet協(xié)議(只有一個(gè)方法:public init(rawValue: Self.RawValue))就可以對(duì)成員變量進(jìn)行比較、類(lèi)似[.normal,.highlighted]這樣的列舉,交并集等。雖然只實(shí)現(xiàn)了一個(gè)初始化方法,但是OptionSet的Extension已經(jīng)幫我們實(shí)現(xiàn)了。

這樣一理順就好理解了。

參考:(http://www.itdecent.cn/p/9a1fcfb7e3ee)

最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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