OptionSet-Swift & OC(UIControlState的区别)

查看swift和OC的UIControlState写法,是不同的:

Swift写法:

public struct UIControlState : OptionSet {

public init(rawValue: UInt)

public static var normal: UIControlState { get }

public static var highlighted: UIControlState { get }

...

}

OC写法:

typedef NS_OPTIONS(NSUInteger, UIControlState) {

UIControlStateNormal      = 0,

UIControlStateHighlighted = 1 << 0,

...

};

OC写法我们调用就是 (UIControlStateNormal | UIControlStateHighlighted),Swift调用是 ([.normal,.highlighted]);OC好理解,位或运算;但是Swift这是什么鬼呢?

查找资料后,原来还是很多东西在这里的的。

OptionSet的声明: public protocol OptionSet : SetAlgebra, RawRepresentable;这是一份协议,继承自SetAlgebra, RawRepresentable协议;实现了OptionSet协议(只有一个方法:public init(rawValue: Self.RawValue))就可以对成员变量进行比较、类似[.normal,.highlighted]这样的列举,交并集等。虽然只实现了一个初始化方法,但是OptionSet的Extension已经帮我们实现了。

这样一理顺就好理解了。

参考:(http://www.jianshu.com/p/9a1fcfb7e3ee)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容