[消息传递之七]-KVO练习
来源:互联网 发布:淘宝海外购 编辑:程序博客网 时间:2024/05/19 20:41
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (strong, nonatomic) IBOutlet UIButton *btnKVO;@property (strong, nonatomic) IBOutlet UIButton *btnDelete;@property (strong, nonatomic) IBOutlet UIButton *btnResume;- (IBAction)ResumeClick:(UIButton *)sender;- (IBAction)KVOClick:(UIButton *)sender;- (IBAction)DeleteClick:(UIButton *)sender;@end
#import "ViewController.h"#import "TestKVO.h"@interface ViewController ()@end@implementation ViewController{ TestKVO* t; NSInteger money;}- (void)viewDidLoad { [super viewDidLoad]; t =[[TestKVO alloc] init]; money = 20; self.btnDelete.enabled = NO; self.btnKVO.enabled = false; // Do any additional setup after loading the view, typically from a nib.}-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if ([keyPath compare:@"HaveMoney" ] == NSOrderedSame) { NSString* str = (__bridge NSString*)context; NSLog(@"Money is %ld,Context is %@",[object HaveMoney],str); if (change) { [change enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"key is %@, obj is %@",key,obj); }]; } } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (IBAction)KVOClick:(UIButton *)sender { t.HaveMoney = money; money++;}- (IBAction)DeleteClick:(UIButton *)sender { [t removeObserver:self forKeyPath:@"HaveMoney"]; self.btnResume.enabled = YES; self.btnDelete.enabled = NO; self.btnKVO.enabled = NO;}- (IBAction)ResumeClick:(UIButton *)sender { [t addObserver:self forKeyPath:@"HaveMoney" options:NSKeyValueObservingOptionNew context:@"hello"]; self.btnKVO.enabled = YES; self.btnDelete.enabled = YES; self.btnResume.enabled = NO;}@end
1,可以重复添加,添加后也是重复执行,这点要注意。
2,删除一次后,就不能重复删除了,不清楚如何检测自己的observer。
3,要响应父类的,删除的时候,可以利用context的值,看看是否本类注册的。
0 0
- [消息传递之七]-KVO练习
- [消息传递之二]-NSMethodSignature练习
- [消息传递之三]-NSInvocation练习
- [消息传递之五]-NSMatchPort练习
- [消息传递之四]-NSTimer练习 倒计时
- [消息传递之一]-NSNotification练习
- iOS消息传递机制---KVC和KVO
- python练习册之七
- Wpf消息循环之消息传递
- Android消息传递之Handler消息机制
- Android消息传递之Handler消息机制
- Android消息传递之Handler消息机制
- MINXI笔记之消息传递
- Android消息传递之组件间传递消息
- Android消息传递之组件间传递消息
- IOS中消息的传递机制(delegate,block,通知,KVO)
- iOS中消息传递机制(KVO,Notification,delegation,block,Target-Action)
- android学习笔记(七):Handler消息传递机制
- zzulioj--1638--Happy Thanksgiving Day - Say 3Q I(水题)
- ROS naviagtion analysis: costmap_2d--ObstacleLayer
- 自己编写栈和队列的声明和调用
- CodeForces 611C New Year and Domino【预处理】
- Java使用RSA加密解密签名及校验
- [消息传递之七]-KVO练习
- 2016-01-10 FFC
- 【Java】使用Json-lib序列化关联对象的异常解决
- 简易在线投票系统(php)——登录与注册
- 机器学习之常用算法总结
- cocos2d-x使用ttf字体时,字体库中不存在的文字用框框代替
- 我的2015-马拉松元年
- 缺少Jar包错误汇总
- 自学QT之创建json