Я пытаюсь отладить проблему, когда объект выпущен слишком много раз и затем освобождается циклом события. В следующий раз, когда я попытаюсь прочитать объект, приложение вылетает с EXC_BAD_ACCESS.Инструменты не показывают мне действительный счетчик ссылок
Чтобы отладить, я включаю NSZombies, а затем используя профиль Zombies с инструментами. Затем я дойду до того момента, когда мое приложение выйдет из строя, а Instruments сообщит мне о сообщении, отправленном на освобожденный экземпляр. Все идет нормально.
Он очень хорошо показывает мне, где библиотеки, такие как UIKit, освобождают и сохраняют указатель на мой объект, но он не показывает мне, где мой собственный код делает это. Он также не отображает истинный счетчик ссылок. К тому моменту, когда Инструменты говорят, что счетчик ссылок равен 1, счетчик ссылок фактически равен 8 согласно распечатке счетчика ссылок в gdb.
Я исследовал возможность того, что инструменты каким-то образом фильтруют выход, но, похоже, я записываю каждый релиз и сохраняю событие. Это абсолютно необходимо в моем приложении, потому что мой диспетчер представлений сразу же освобождается после отображения, а это означает, что попытка сделать что-либо, что отправит сообщение контроллеру, приведет к его краху.
После размещения точки останова в методе dealloc я обнаружил, что мой объект действительно освобождается циклом события, так что это не случай вызова изгоев для dealloc чем-то другим.
Сообщение код где вы создают экземпляр ViewController. –