使用Block实现KVO

使用Block实现KVO

ID:37727890

大小:144.00 KB

页数:15页

时间:2019-05-29

使用Block实现KVO_第1页
使用Block实现KVO_第2页
使用Block实现KVO_第3页
使用Block实现KVO_第4页
使用Block实现KVO_第5页
资源描述:

《使用Block实现KVO》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用Block实现KVOSJKVOController的用法只需要引入NSObject+SJKVOController.h头文件就可以使用SJKVOController。先看一下它的头文件:#import#import"SJKVOHeader.h"@interfaceNSObject(SJKVOController)//==============addobserver===============//-(void)sj_addObserver:(NSObject*)observerfor

2、Keys:(NSArray*)keyswithBlock:(SJKVOBlock)block;-(void)sj_addObserver:(NSObject*)observerforKey:(NSString*)keywithBlock:(SJKVOBlock)block;//=============removeobserver=============//-(void)sj_removeObserver:(NSObject*)observerforKeys:(NSArray*)keys;-(

3、void)sj_removeObserver:(NSObject*)observerforKey:(NSString*)key;-(void)sj_removeObserver:(NSObject*)observer;-(void)sj_removeAllObservers;//=============listobservers===============//-(void)sj_listAllObservers;@end从上面的API可以看出,这个小轮子:1.支持一次观察同一对象的多个属性。2.可以一次只观察一个对象的一个属性。3.可

4、以移除对某个对象对多个属性的观察。4.可以移除对某个对象对某个属性的观察。5.可以移除某个观察自己的对象。6.可以移除所有观察自己的对象。6.打印出所有观察自己的对象的信息,包括对象本身,观察的属性,setter方法。下面来结合Demo讲解一下如何使用这个小轮子:在点击上面两个按钮中的任意一个,增加观察:一次性添加:-(IBAction)addObserversTogether:(UIButton*)sender{NSArray*keys=@[@"number",@"color"];[self.modelsj_addObserver:se

5、lfforKeys:keyswithBlock:^(idobservedObject,NSString*key,idoldValue,idnewValue){if([keyisEqualToString:@"number"]){dispatch_async(dispatch_get_main_queue(),^{self.numberLabel.text=[NSStringstringWithFormat:@"%@",newValue];});}elseif([keyisEqualToString:@"color"]){dispatch_

6、async(dispatch_get_main_queue(),^{self.numberLabel.backgroundColor=newValue;});}}];}分两次添加:-(IBAction)addObserverSeparatedly:(UIButton*)sender{[self.modelsj_addObserver:selfforKey:@"number"withBlock:^(idobservedObject,NSString*key,idoldValue,idnewValue){dispatch_async(disp

7、atch_get_main_queue(),^{self.numberLabel.text=[NSStringstringWithFormat:@"%@",newValue];});}];[self.modelsj_addObserver:selfforKey:@"color"withBlock:^(idobservedObject,NSString*key,idoldValue,idnewValue){dispatch_async(dispatch_get_main_queue(),^{self.numberLabel.backgrou

8、ndColor=newValue;});}];}添加以后,点击最下面的按钮来显示所有的观察信息:-(IBAction)showAllObservingItems:(UIButton*)send

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。