5

使用访问器似乎是在集合对象上获取 KVO 通知的方法,但这似乎不适用于 UIViewController 的 childViewControllers NSArray 属性。我希望在向此属性添加或删除对象时收到通知。所以我尝试了这个:

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

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

但我不确定我是否做得对,我没有收到任何通知。我想要的可能吗?

4

1 回答 1

0

关键是对属性的所有修改都必须通过符合 KVO 的方式。这与UIViewController实现方式有关,在该类之外您无能为力。使用索引集合访问器是UIViewController实现 KVO 兼容的一种方式,但还有其他方式。我不知道该属性是否符合 KVO;从你的报告来看,显然不是。如果底层实现不使用它们,则在类别或子类中添加 getter 甚至 setter 都无济于事。

于 2012-04-26T20:44:27.423 回答