Класс имеет свойство (и экземпляр var) типа NSMutableArray с синтезированными аксессуарами (через @property
). Если вы наблюдаете этот массив, используя:
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
И затем вставьте объект в массив следующим образом:
[myObj.theArray addObject:NSString.string];
Уведомление observValueForKeyPath... отправлено не. Однако следующее сообщение отправляет надлежащее уведомление:
[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];
Это потому, что mutableArrayValueForKey
возвращает прокси-объект, который заботится об уведомлении наблюдателей.
Но не должны ли синтезированные аксессоры автоматически возвращать такой прокси-объект? Каким образом можно обойти это - написать ли пользовательский аксессуар, который просто вызывает [super mutableArrayValueForKey...]
?