Указатель указывает на другой объект: (нераспознанный селектор отправлен на экземпляр) - PullRequest
2 голосов
/ 12 августа 2011

Я получил этот странный сбой в моем приложении, когда я пытаюсь вызвать эту функцию на моем объекте pageModel

[pageModel pageTitle] isEqualToString:@"some text"];

Это дамп отладчика

-[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x661de40
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM isEqualToString:]: unrecognized selector sent to instance 0x661de40'

и возиться с отладчиком, я обнаружил довольно странное поведение

(gdb) po pageModel
<PXPage: 0x6622e20>

(gdb) po [pageModel pageTitle]
<__NSArrayM 0x661de40>(...

(gdb) po pageModel.pageTitle
<__NSArrayM 0x661de40>(...

Он думает, что это MutableArray, но это не так.Это должно быть NSString ... А в другой раз это был UIImage, а в другой раз что-то еще и так далее.Кто-нибудь в качестве подсказки о том, что здесь происходит?

Спасибо

Ответы [ 2 ]

5 голосов
/ 12 августа 2011

Это классическая ошибка двойного выпуска.Объект был освобожден слишком много раз, занимаемая им память была назначена другому объекту, так что другой объект получает сообщения, предназначенные для старого объекта.

Требуется установить для переменной среды NSZombieEnabled значение YES в редакторе схем и запустите ваше приложение в отладчике.Поиск в Google и / или stackoverflow может помочь вам найти больше информации по этому вопросу.

0 голосов
/ 12 августа 2011

[pageModel pageTitle] возвращает массив. Вы используете NSString Class. это причина сбоя. поэтому проверьте тип данных [pageModel pageTitle].

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