Каким способом нажимается кнопка «Назад» на панели навигации? - PullRequest
0 голосов
/ 09 декабря 2008

Я использую UINavigationController, чтобы выдвинуть и выдвинуть представление.

Я использовал [[self navigationController] pushViewController:myView animated:YES], чтобы увеличить вид. Затем я нажал верхнюю левую кнопку назад, чтобы вернуться, я получаю сообщение об ошибке:

*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0'

Мне интересно, какой метод -popViewController вызывается при вызове кнопки возврата. Происходит ли эта ошибка в первом представлении или во втором представлении, которое выдвигается.

Спасибо.

1 Ответ

3 голосов
/ 09 декабря 2008

Кнопка Назад должна называться -popViewControllerAnimated :. Однако, похоже, у вас есть ошибка переиздания класса. По сути, у вас есть представление, которое присваивается где-то. Это представление просто адрес в памяти. В какой-то момент вы освобождаете это представление вплоть до значения retainCount, равного 0. Когда это происходит, представление освобождается. В какой-то момент после этого создается NSDictionary с тем же адресом памяти , что и в вашем предыдущем, теперь освобожденном представлении. Сейчас что-то пытается отправить вашему представлению сообщение, но его больше нет, вместо этого есть NSDictionary. Он говорит что-то вроде: [просмотреть суперпредставление], но просмотр теперь указывает на диктовку, которая не отвечает на суперпредставление.

Итог: проверьте ваши вызовы удержания / разблокировки / автоматического выпуска и убедитесь, что вы не переиздаваете одно из ваших представлений (или контроллеров представления, хотя это менее вероятно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...