在我的界面中,我有一个NSTextField
谁的value
绑定到NSArrayController's
selection.selectedType.title
。所有NSArrayController's
对象都是自定义对象各有两种方法:KVO:无法删除观察者
- (MYType *)selectedType;
- (void)setSelectedType: (MYType *)type;
的不有伊娃selectedType
。但是,他们确实有一个iVar,持有所有MYType
对象。该代码归结为:
- (MYType *)selectedType
{
if (someIndex == 0)
return [types objectAtIndex: 0];
else
return [self typeWithIndex: someIndex];
}
- (void)setSelectedType: (MYType *)type
{
someIndex = [type index];
}
MYType
对象得到了NSString *title
伊娃与相应@property
和synthesize
。
每当我打电话setSelectedType:
,变化是在NSTextField
立即可见,一切似乎工作,但我得到一个日志消息说:
无法删除观察员NSArrayController的0x141160为重点 路径“selectedType。标题“,最可能的原因是 ,因为在没有发送适当的KVO通知的情况下更改了”selectedType“键值的 。检查MY35类的KVO符合性 。
我试图封装setSelectedType:
法willChangeValueForKey:
和didChangeValueForKey:
,然后我仍然有一个日志消息,但不同的一个:
无法删除观察员NSKeyValueObservance 0x1c7570为重点 路径“称号”,从MYType 0x1a4be0,因为它未注册为观察员 。