У меня есть UITableView.
Здесь у меня разные ячейки. Каждая ячейка имеет модель. С помощью KVO и NotificationCenter ячейка прослушивает модель изменений. Когда я покидаю ViewController, я получаю эту ошибку:
An instance 0x109564200 of class Model was deallocated while key value observers were still registered with it.
Observation info was leaked, and may even become mistakenly attached to some other object.
Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here the current observation info:
<NSKeyValueObservationInfo 0x109429cc0> (
<NSKeyValueObservance 0x109429c50: Observer: 0x10942d1c0, Key path: name, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x10968fa00>
)
В ячейке я делаю это, когда свойство модели установлено/изменено:
[_model addObserver:self
forKeyPath:@"name"
options:0
context:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(modelIsInvalid:)
name:@"modelIsInvalid"
object:_model];
Затем в ячейке dealloc:
- (void)dealloc
{
NSLog(@"DEALLOC CELL");
[[NSNotificationCenter defaultCenter] removeObserver:self];
[_model removeObserver:self forKeyPath:@"name"];
}
В модели я также проверяю, когда она освобождается:
- (void)dealloc
{
NSLog(@"DEALLOC MODEL");
}
Все ячейки освобождаются перед всеми моделями, но все же я получаю эту ошибку. Также я не уверен, как установить точку останова, указанную в ошибке.