У меня возникли проблемы с отладкой приложения для iPhone, которое воспроизводимо не работает.
Рассказ:
Пользовательский UIViewController
выделяется и помещается в стек UINavigationController
.
Через некоторое время UIViewController
извлекается из стека.
При следующем нажатии UIViewController
на стек приложение перестает работать.
Стандартная процедура для любого сбоя - использование инструментов с включенной NSZombie
.
При осмотре истории объекта выясняется, что я не понимаю:
- объект получает 2 (два)
autorelease
сообщения и
- метод стока
NSAutoreleasePool
отправляет 3 (три) сообщения об освобождении
Пока что единственный способ предотвратить сбои - НЕ отправлять 1 (одно) сообщение об отпускании объекту, о котором идет речь, и, таким образом, поднимать красный флаг для утечек памяти, только если он не протекает.
Есть ли другое решение, которое я упустил из виду?
Обновление: Как один из вас указал на очевидное:
У вас есть проблема в вашем коде. Ничего общего с автоматическим сливом из бассейна.
Оказалось, что первый UIViewController
был передан в качестве делегата на UINavigationController
, поэтому я запутался, когда поступил вызов Zombie
от самого контроллера навигации.
В следующий раз мне следует быть более осторожным, прежде чем задавать неправильный вопрос.