2012-04-26 69 views
5

使用accessors似乎是在集合對象上獲取KVO通知的方式,但這似乎不適用於UIViewController的childViewControllers NSArray屬性。我想在向此屬性添加或刪除對象時收到通知。所以我試過這個:UIViewController childViewControllers數組上的KVO

[self addObserver:self forKeyPath:@"childViewControllers" options:NSKeyValueObservingOptionNew context:nil]; 

-(NSUInteger)countOfChildViewControllers 
{ 
    return self.childViewControllers.count; 
} 

但我不知道如果我做得對,我沒有收到任何通知。我想要什麼?

回答

0

問題是,財產的所有修改都必須通過符合KVO的方法。這與UIViewController的實施方式有關,你無法從該課外做任何事。使用索引的集合訪問器是實現UIViewController可以實現KVO合規性的一種方式,但還有其他一些方法。我不知道該房產是否符合KVO標準;從你的報告,顯然不是。如果底層實現不使用它們,那麼在類別或子類中添加getter甚至setter都無濟於事。