Я использовал привязки Какао в моем NSTableCellView внутри моего NSOutlineView, но предоставлял свои собственные данные в метод outlineView objectValueForTableColumn:byItem: (т.е. не использовал NSArrayController для содержимого). Он работает нормально, пока я не удалю строку из таблицы, где я получаю управляемый объект и удаляю его из контекста, а в наблюдателе NSManagedObjectContextWillSaveNotification я обновляю свою модель данных и удаляю строку из OutlineView. Но когда я это делаю, я получаю предупреждение:
Экземпляр 0x10d922890 класса Log_Log_ был освобожден, в то время как наблюдатели значения ключа все еще были зарегистрированы в нем. Информация о наблюдении просочилась и может даже быть ошибочно привязана к какому-либо другому объекту. Установите точку останова на NSKVODeallocateBreak, чтобы остановиться здесь в отладчике. Вот информация о текущем наблюдении ....
Установка точки останова на самом деле не помогает выявить проблему. Я знаю, что что-то наблюдает за свойствами в журнале (tableCellView, который выполняет привязку), но как мне очистить его, когда строка удаляется из представления структуры? Я переопределяю didTurnIntoFault журнала и получаю значение, отличное от нуля, в self.observationInfo, но я не думаю, что это может помочь определить, какой объект наблюдения нужно удалить в качестве наблюдателя на данном этапе. Я не уверен, почему это происходит, и как лучше всего отладить это, чтобы найти объект-нарушитель, который является наблюдателем «привязок».