欢迎来到天天文库
浏览记录
ID:37727890
大小:144.00 KB
页数:15页
时间:2019-05-29
《使用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
此文档下载收益归作者所有