2013-07-10 162 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

雅感謝北斗星我得到了它的價值... –