2013-07-10 157 views
0

我有四节课,让我们假设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); 

} 
+0

显示代码。什么可行,什么不可行,有什么区别? – Wain

+0

只是一个分,我会添加代码现在 –

+0

你只需要添加'self'作为观察员...... – Wain

回答

0

你只是基于B添加一个observer,C,d与给定的名称和发布NSNotification每次有事A.

+0

我现在使用的志愿观测 –

0

我认为你得到的实例和类之间有点困惑。观察是基于实例的,因此,当您创建3个不同的ClassA实例并添加一个不同的对象作为每个实例的观察者时,它们各自单独链接。因此,当您更新ClassA的森林实例时,只有附属于该实例的观察者才会更新。

做你的描述,你应该实例ClassA只有一次,并通过其要观察它的类之间的实例。然后它们都可以附加到同一个实例,并且在更新时都会收到回调。

+0

雅感谢北斗星我得到了它的价值... –