Завершение приложения из-за необработанного исключения: «Экземпляр класса UITableView был освобожден, в то время как наблюдатели значения ключа все еще были зарегистрированы с ним».

Я создал кнопку и дал действие на кнопку В действии

[self.navigationController popViewControllerAnimated:YES];

Но всякий раз, когда я нажимаю кнопку, это дает мне это исключение даже после использования ARC в моем проекте. Я застрял в этом месте за последние два дня. Поэтому, если кто-то знает решение, пожалуйста, помогите мне. Заранее спасибо.

Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Экземпляр 0x16c81e00 класса UITableView был освобожден, в то время как наблюдатели значения ключа все еще были зарегистрированы с ним.

Current observation info: <NSKeyValueObservationInfo 0x15e209d0> (

<NSKeyValueObservance 0x15d0d180: Observer: 0x15e28190, Key path: contentOffset, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x15d0d110>
<NSKeyValueObservance 0x15d0bef0: Observer: 0x15e21e90, Key path: contentSize, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x15d0c3f0>
<NSKeyValueObservance 0x15e209f0: Observer: 0x15e21e90, Key path: contentOffset, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x15d0d110>
)

person Pradumna Patil    schedule 04.05.2015    source источник
comment
Вы добавили наблюдателя в свой контроллер?   -  person Nilesh Patel    schedule 04.05.2015
comment
Если вы делаете KVO, например, removeObserver, когда объект удаляется с экрана, зависит от того, как это реализовано.   -  person Larme    schedule 04.05.2015


Ответы (1)


Возможно, вы установили определенного наблюдателя для другого события.

Например, изменение свойства кода tableview будет выглядеть так:

[self.tableView addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil]

Вам нужно удалить всех этих наблюдателей в методе Dealloc, например:

- (void)dealloc {
    [self.tableView removeObserver:self forKeyPath:@"frame"]; }
person Nilesh Patel    schedule 04.05.2015
comment
Когда я использую ARC в своем проекте, это не позволит мне использовать Dealloc в моем проекте. - person Pradumna Patil; 04.05.2015
comment
есть ли какая-либо другая причина, по которой вы знаете, почему возникает эта ошибка. - person Pradumna Patil; 04.05.2015
comment
Используете ли вы какой-либо наблюдатель в своем приложении? - person Nilesh Patel; 04.05.2015
comment
да, я использую, а также освободил его, как вы сказали, но все равно получаю ту же ошибку. - person Pradumna Patil; 05.05.2015
comment
Давайте продолжим это обсуждение в чате. - person Nilesh Patel; 05.05.2015
comment
Сделайте одну вещь, например, поставьте точку останова и посмотрите, правильно это называется или нет. - person Nilesh Patel; 05.05.2015
comment
Спасибо, я делал ту же ошибку, но, наконец, она решена с вашей помощью, спасибо за ваше время. - person Pradumna Patil; 06.05.2015