基于kvo的观察者模式
来源:互联网 发布:无人机编队表演算法 编辑:程序博客网 时间:2024/06/11 01:53
以下是我自己写的代码,方便新手理解kvo模式的流程。
思路,创建Person类,年龄属性,
show类负责显示Person对象,年龄显示的变化。
用kvo模式。
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Show.h"
int main(int argc,const char * argv[]) {
Person *p = [[Personalloc]init];
p.age=11;
Show *s = [[Showalloc]initWithPerson:p];
[p setValue:@22forKey:@"age"];
[p setValue:@23forKey:@"age"];
// NSLog(@"%ld",p.age);
return 0;
}
#import <Foundation/Foundation.h>
@interface Person :NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)NSInteger age;
@end
#import "Person.h"
@implementation Person
@end
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Show : NSObject
@property(nonatomic,retain)Person *person;
- (id)initWithPerson:(Person *)per;
@end
------------------------#import "Show.h"
@implementation Show
- (id)initWithPerson:(Person *)per{
self = [superinit];
if(self){
_person = per;
/*注意这里:把创建的per对象,即p,赋值给show里面的Person类属性,即设置,要拿出来还要生成get方法,所以这里不能简单的写个属性,直接@property()即可。*/
//_person = [per retain];
[_personaddObserver:selfforKeyPath:@"age"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOldcontext:nil];
}
return self;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"age"]){
NSNumber *age = [change objectForKey:@"new"];
NSInteger newage = [age integerValue];
NSLog(@"现在的age是%ld",newage);
}else{
NSLog(@"error");
}
}
- (void)dealloc{
[_personremoveObserver:selfforKeyPath:@"age"];
}
@end
- 基于kvo的观察者模式
- iOS开发笔记之基于键值的观察者模式(KVO)
- iOS的观察者模式之:KVC&KVO
- (有码)KVO 轻量级的观察者模式
- 65-KVO(观察者模式)
- KVO--观察者模式
- 观察者模式 - 通知/KVO
- kVO 观察者模式
- KVO观察者模式简介
- KVO 观察者模式
- 8观察者模式( kvo基于键值 和Notification通知)
- 观察者模式( kvo基于键值 和Notification通知)
- KVO Key Value Observing 基于键值的观察者
- KVO观察者模式<代码演示>
- oc语言 KVO观察者模式
- 观察者模式 --KVO
- kvo 观察者模式底层深究
- objective-c 键值观察者KVO模式的学习
- 机试算法讲解: 第48题 递推之写信发错啦
- 黑马程序员—— 反射总结
- linux_c开发(5-2)进程间通讯_管道通讯
- 分治法和指针求最大最小数
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(一)
- 基于kvo的观察者模式
- windows的socket_tcp客服端端与linux的socket_tc服务端简单通讯
- 怎样才是理想的程序员
- 插入排序
- Android实现网络多线程断点续传下载原理
- USB 3G dongle E303在android4.4上的移植支持
- KVC 与 KVO
- 【CSS学习】CSS 边框
- java基本算法题及答案