OptionSet-Swift & OC(UIControlSt

2017-05-24  本文已影响0人  yehkong

查看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)

上一篇下一篇

猜你喜欢

热点阅读