- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS 枚举的巧用
1.使用层面的理解
在这里首先讲如何简单的使用, 仅仅是使用层面(有理解错误的地方帮忙纠正), 然后我们在去理解位运算符! 在下面的图中我们可以看见枚举值中有(位运算符:左移):
INCLUDEPICTURE \d http://upload-images.jianshu.io/upload_images/2353624-476df8d2cb3f2524.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240 \* MERGEFORMATINET
如果我们在枚举值中看见那我们就可以通过|(位运算符:或)进行组合使用如下代码为例:
//随便添加一个UITextField
UITextField *field = [UITextField new];
//Begin,Changed,DidEnd都能触发UITextField的事件
[field addTarget:self action:@selector(textFieldDidChanged) forControlEvents: UIControlEventEditingDidBegin |
UIControlEventValueChanged |
UIControlEventEditingDidEnd
];
[self.view addSubview:field];
如下图枚举值中没有,这就是普通的NSInteger类型的枚举, 所以不能组合使用:
INCLUDEPICTURE \d http://upload-images.jianshu.io/upload_images/2353624-87cc026229c4ccc0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240 \* MERGEFORMATINET
那苹果官方是怎么知道我们多个条件组合使用了呢? 答案是通过(位运算符:与)进行判断的:
//controlEvents是组合使用后的一个值
NSUInteger controlEvents = UIControlEventEditingDidBegin | UIControlEventValueChanged | UIControlEventEditingDidEnd;
/**
//通过 来判断是否包含:
UIControlEventEditingDidBegin,
UIControlEventValueChanged,
UIControlEventEditingDidEnd
*/
if (controlEvents UIControlEventEditingDidBegin) {
NSLog(@UIControlEventEditingDidBegin);
}else if (controlEvents UIControlEventValueChanged) {
NSLog(@UIControlEventValueChanged);
}else if (controlEvents UIControlEventEditingDidEnd) {
NSLog(@UIControlEventEditingDidEnd);
}
那么我们接下来看看使用过程中牵扯到的位运算符, 我们会在下面举个例子!
2.理解位运算符
首先我们有一个枚举, 下面代码2种写法我们暂时先不用管,等位运算符讲完我们会讨论枚举的宏使用:
//typedef NS_OPTIONS(NSInteger, myTests) {// nameA = 1 0,// nameB = 1 1,// nameC = 1 2,// nameD = 1 3,//};
typedef enum {
nameA = 1 0,
nameB = 1 1,
nameC = 1 2,
nameD = 1 3,
}myTests;
/**
nameA = 1 0 :值为1(2的0次方)
nameB = 1 1 :值为2(2的1次方)
nameC = 1 2 :值为4(2的2次方)
nameD = 1 3 :值为8(2的3次方)
*/
通过进行判断我们来看看输出结果如下图:
INCLUDEPICTURE \d http://upload-images.jianshu.io/uplo
文档评论(0)