Контроллер является owner
той точки зрения, вид будет держать слабую ссылку (не-retain
ЭД) в контроллер, контроллер будет держать сильный (ED) retain
ссылкой на вид. В этом случае ваш navigationController был автореализован, поэтому теоретически он должен быть освобожден, пока никто не будет указан.
С навигационной точки зрения вид с другой стороны был добавлен как подзаголовок в другой, что означает, что он сохраняется в виде родительского представления. Это проблема, потому что если в представлении есть какие-либо вызовы контроллеру, эти вызовы перейдут на освобожденный объект. 99% времени вы получаете EXC_BAD_ACCESS
для этого, и ваше приложение падает. Остальные 1% намного хуже.
К счастью, все, что вам нужно сделать, чтобы предотвратить вышеупомянутые катастрофы, - это найти что-то, чтобы «владеть» вашим навигационным контроллером, дать ему @property (сохранить) и назначить для этого навигационный контроллер. (Держите авторекламу, эта часть хороша) Хорошими кандидатами на владение вашим контроллером навигации являются контроллер представления родительского представления и делегат приложения.
Таким образом, контроллер будет придерживаться столько, сколько потребуется, потому что он будет сохранен хотя бы один раз.
Здесь важно различать контроллер и вид. Объект представления сохраняется, объект контроллера выделяется затем автоматически, поэтому он ушел, если вы его не сохранили.
кроме s/he автореализован – Colin
Отредактировано - спасибо. –