Цель C: объект освобожден, пока наблюдатели значения ключа еще зарегистрированы в нем - PullRequest
17 голосов
/ 12 мая 2011

Я нажимаю на ошибку ниже, после того как я добавил 2 дополнительных поля в свою базовую модель данных.

CarPark_CarPark_ 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's the current observation info:
<NSKeyValueObservationInfo 0x1b6510> (
<NSKeyValueObservance 0x19b210: Observer: 0x1a8cf0, Key path: coordinate, 
Options: <New: NO, Old:     NO, Prior: YES> Context: 0x0, Property: 0x1b7e00>
)

Я немного растерялся, что делать дальше.Любое руководство по этому вопросу будет с благодарностью!Пожалуйста, дайте мне знать, какая другая информация требуется.

Ответы [ 2 ]

28 голосов
/ 13 мая 2011

Чтобы установить точку останова, откройте вкладку точек останова в Xcode 4 (окно точек останова в Xcode 3) и добавьте новую символическую точку останова для символа «NSKVODeallocateBreak»

Используйте консоль отладчика, чтобы напечатать наблюдателя по адресу, указанному в информации наблюдения

Наблюдатель: 0x19af20

po 0x19af20

Это должно дать некоторую ценную информацию о наблюдателе. Переопределите addObserver: forKeyPath: options: context: в своем пользовательском классе CarPark и установите точку останова, чтобы увидеть точное местоположение устанавливаемого наблюдения.

9 голосов
/ 15 января 2013

Вероятно, это связано с тем, что наблюдатель был освобожден до наблюдения объектов. Вам потребуется реализовать метод - (void) dealloc , чтобы удалить все наблюдаемые объекты в наблюдателе.

...