#import "TestObserver.h"
@implementation TestObserver
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSNumber *oldValue=[change objectForKey:NSKeyValueChangeOldKey];
NSNumber *newValue=[change objectForKey:NSKeyValueChangeNewKey];
NSLog(@"Observed:%@ of %@ was changed from %@ to %@",keyPath,object,oldValue,newValue);
}
@end
#import <Foundation/Foundation.h>
#import "TestClass.h"
#import "TestObserver.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
TestClass *testObj=[[TestClass alloc]init];
__unused TestObserver *testObserver=[[TestObserver alloc]init];
//添加观察者
[testObj addObserver:testObserver
forKeyPath:@"height"
options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld
context:nil];
//两秒更新一次值
__unused NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:2.0 target:testObj
selector:@selector(updateLastValue) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] run];
}
return 0;
}