Откуда вы знаете, что сохранение счетчика 2 не является правильным поведением для контроллера навигации?
Вы не можете полагаться на retainCount при выполнении отладки alloc / release, потому что мы не знаем, каквнутренности работы UIKit.Пока вы сохраняете и выпускаете правильно в своем коде, вы можете быть на 99,9% уверены, что UIKit также будет работать правильно.
Я бы предположил, что popViewController удалит все удержания, которые добавил pushViewController - даже если я неНе знаю, сколько их будет, но он может установить автоматическое освобождение, поэтому вы не можете гарантировать, что оно будет выпущено сразу после вызова popViewController.
Я бы работал, исходя из предположения, что UIKitу контроллера навигации нет ошибки (в противном случае многие другие разработчики будут жаловаться на это!), и где-то в вашем коде вы сохраняете его где-то еще (вероятно, не осознавая этого, то есть свойство делегата, объявленное как сохраняющее вместо assign и т. д.)
Надеюсь, это поможет!