У меня есть свойство NSMutableArray в моем AppDelegate, называемое блоками.
Я хотел бы наблюдать, когда объект добавляется в этот массив.
Я читал другие посты, но не могу понять, почему это не работает.
В моем классе делегата приложения я реализую
- (void)insertObject:(id)obj inBlocksAtIndex:(NSInteger)index
{
[blocks insertObject:obj atIndex:index];
}
В методе init моего контроллера представления я добавляю наблюдателя к моей ссылке AppDelegate.
boardModel = [[UIApplication sharedApplication] delegate];
[boardModel addObserver:self forKeyPath:@"blocks" options:0 context:NULL];
В моем методе viewDidLoad контроллера представления я пытаюсь вызвать средство доступа к индексированному массиву KVO, которое я реализовал ранее,
[boardModel insertObject:[[Block alloc] init] inBlocksAtIndex:0];
Затем я реализую свой метод наблюдать за ValveForKeyPath:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"blocks"])
{
NSLog(@"ADDED");
}
}
Я попытался добавить оператор NSLog перед оператором if в наблюдаемом значенииForKeyPath, и кажется, что он никогда не вызывается.
Я также пробовал NSLogging [[boardModel blocks] count], и он говорит, что счетчик равен 1 (объект добавляется).
Должно быть, я что-то упустил.