exc_bad_access после obj_msgSend с retainCount = 2 - PullRequest
1 голос
/ 01 ноября 2011
if(currentCat != nil) {
    if ([currentCat hasValidTag]) {...}}

Я получаю exc_bad_access во второй строке.retainCount of currentCat в настоящий момент равен 2, и в трассировке стека нет автоматического выпуска.Код запускается событием и выполняется одиннадцать раз без каких-либо проблем, каждый сбой запуска двенадцати (я действительно не знаю, почему двенадцать).

Мой след стека: 1. obj_msgSend 2. 3. "вызывающий метод"-> Хорошо ...

Итак, как я понимаю, объект существует не ноль.Я не вижу причин для плохого доступа.Любая идея, что здесь происходит.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

О вашем коде рассказать особо нечего, но сама ошибка exc_bad_access может помочь решить вашу проблему.

Когда вы вызываете сообщение об освобожденных объектах, вы получаете exc_bad_access.Вы можете попробовать использовать инструменты с NSZumbie , чтобы отслеживать ваши объекты и выяснить, почему вы получаете эту ошибку.

OBS .: В вашем коде первое условие

if(currentCat != nil)

бессмысленно, потому что второго условия

if ([currentCat hasValidTag])

достаточно для проверки, равняется ли currentCat нулю.Вызов сообщения на ноль возвращает ноль и ничего не делать.Поэтому второй блок if не будет вызван.

0 голосов
/ 01 ноября 2011

Возможно, что-то еще в вашем коде вызывает ошибку - или это может быть одно из свойств, на которые ссылается hasValidTag.Попробуйте вызвать статический анализатор через Product> Analyze.Если это не сработает, попробуйте инструмент Zombies (Product> Profile).

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