KVO
来源:互联网 发布:php招聘要求 编辑:程序博客网 时间:2024/05/22 12:54
person.h
#import <Foundation/Foundation.h>
#import "Watcher.h"
@class Watcher;
@interface Person : NSObject
@property (nonatomic,strong)NSString *name;
@property (nonatomic,strong)NSString *address;
@property (nonatomic,strong)Watcher *watcher;
-(void)addWatcher:(Watcher *)watcher;
-(void)update;
@end
person.m
#import "Person.h"
@implementation Person
-(void)addWatcher:(Watcher *)watcher
{
self.watcher = watcher;
//为当前类添加一个观察者,当地址发生变化时,观察者会接收到通知
[selfaddObserver:_watcherforKeyPath:@"address"options:NSKeyValueObservingOptionNew |
NSKeyValueObservingOptionOld
context:@"address changed"];
}
-(void)update
{
self.address =@"beijing";
}
-(void)dealloc
{
//移除观察者
[selfremoveObserver:_watcherforKeyPath:@"address"];
}
@end
watcher.h
#import <Foundation/Foundation.h>
@interface Watcher : NSObject
@end
watcher.m
#import "Watcher.h"
@implementation Watcher
//观察者必须要实现这个方法,用于接收被观察者发来的通知,并进行处理
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
NSLog(@"obj:%@ change:%@ keyPath:%@,context:%@",object,change,keyPath,context);
NSString *newAddress = [objectvalueForKeyPath:keyPath];
NSLog(@"%@:%@",context,newAddress);
}
@end
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Watcher.h"
int main(int argc,const char * argv[]) {
@autoreleasepool {
Person *person = [[Personalloc]init];
Watcher *watcher = [[Watcheralloc]init];
[person addWatcher:watcher];
person.address =@"beijing";
person.address =@"shanghai";
}
return0;
}
- KVO
- kvo
- kvo
- KVO
- KVO
- Kvo
- KVO
- kvo
- KVO
- KVO
- KVO
- KVO
- KVO
- KVO
- KVO
- KVO
- KVO
- KVO
- Prim算法的实现及应用( 最小生成树)
- 找到第一个只出现一次的字符
- hdoj-2037-今年暑假不AC
- iOS 开发中的消息机制-代理、通知、block
- 85_线程导致的内存泄漏
- KVO
- bash问题引起的centos系统不能启动
- MySQL优化
- Java Web基础知识之安全:人生苦短,注意安全
- fzoj Problem 2233 ~APTX4869 【并查集】
- Bitmap和Drawable详解
- display与visibility的区别
- 华为面试题
- Restore IP Addresses