KVO 做这些做完全相同的事情吗?
KVO do these do the exact same thing?
这些是否做同样的事情,如果不是,究竟有什么区别?
[self addObserver:self forKeyPath:@"user.name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
和
[self.user addObserver:self forKeyPath:@"name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
他们做的事情略有不同。前者观察 self
上的关键路径 "user.name"
,这意味着如果 user
或该用户的 name
发生变化,它将触发。后者在 self.user
上观察 "name"
,这意味着它只会在该用户的 name
更改时触发。
这些是否做同样的事情,如果不是,究竟有什么区别?
[self addObserver:self forKeyPath:@"user.name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
和
[self.user addObserver:self forKeyPath:@"name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
他们做的事情略有不同。前者观察 self
上的关键路径 "user.name"
,这意味着如果 user
或该用户的 name
发生变化,它将触发。后者在 self.user
上观察 "name"
,这意味着它只会在该用户的 name
更改时触发。