【发布时间】:2013-07-10 12:09:16
【问题描述】:
我有大约四个类让我们假设 A、B、C 和 D,现在我的类 B、C、D 需要观察类 A 的值并在值发生变化时得到通知。我已经观察到 B 类中的值,但我无法在其他两个类中得到通知,比如 C 和 D。 提前谢谢..
- (void)viewDidLoad
{
[super viewDidLoad];
newClassAToBeObserved=[[ClassATobeObserved alloc]init];
[newClassAToBeObserved addObserver:self forKeyPath:@"StatusToken" options:NSKeyValueObservingOptionNew context:NULL];
ClassB*classB=[[ClassB alloc]init];
[classB func];
ClassC*classc=[[ClassC alloc]init];
[classc func];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"StatusToken"])
{
NSLog(@"changed value is : %@",[object valueForKeyPath:keyPath]);
}
}
-(IBAction)ClickIt
{
[newClassAToBeObserved setStatusToken:@"TokenExpired"];
NSLog(@"Value-->%@",newClassAToBeObserved.StatusToken);
}
【问题讨论】:
-
显示代码。有效和无效之间有什么区别?
-
等一下,我现在就添加代码
-
您只是将
self添加为观察者... -
我在 B 类(“[classB func];”)和 C 类(“[classC func];”)的 func 中注册观察者。
-
不传递
newClassAToBeObserved作为参数怎么办?
标签: objective-c key-value-observing