標籤:class ons nsstring 運行時 margin property atomic add span
#import "HMViewController.h"#import "HMPerson.h"@interface HMViewController ()@property (nonatomic, strong) HMPerson *p;@end@implementation HMViewController- (void)viewDidLoad{ [super viewDidLoad]; // 運行時機制:runtime HMPerson *p = [[HMPerson alloc] init]; p.age = 20; [p addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil]; p.age = 30; self.p = p;}- (void)dealloc{ [self.p removeObserver:self forKeyPath:@"age"];}/** * 當監控的某個屬性的值改變了就會調用 * * @param keyPath 屬性名稱(哪個屬性改了?) * @param object 哪個對象的屬性被改了? * @param change 屬性的修改情況(屬性原來的值、屬性最新的值) * @param context void * == id */- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ NSLog(@"%@對象的%@屬性改變了:%@", object, keyPath, change);}@end
IOS KVO的實現原理