Этот вопрос был в моем сознании с тех пор, как я начал с разработки iOS: UINavigationController
и использования памяти.Использование памяти: когда имеет смысл использовать UINavigationController, а когда нет?
Я вижу множество приложений, таких как iMail, Find Friends, Notes и т. Д., Где UINavigationController имеет прекрасный смысл. Они позволяют вам развернуть два или три уровня иерархии, и все.
Но представьте себе, что вы просматриваете глубокую иерархию, например файловую систему вашего Mac, начиная с корневой папки. Если бы я использовал UINavigationController, я бы продолжал толкать сотни контроллеров в стеке (в худшем случае). Я не считаю это хорошим использованием. Могут быть случаи, когда толкаемые контроллеры могут стать очень тяжелыми (насколько это касается памяти), и они просто сидят там ни для чего.
Я бы хотел, чтобы была динамическая версия UINavigationController: она просто сообщит вам, что создавать при навигации по иерархии вместо того, чтобы просто поднимать иерархию.
Теперь мой вопрос: является ли UINavigationController использоваться для глубоких иерархий? Каковы хорошие альтернативы, если вы хотите, чтобы все анимация, элементы бара и т. Д.? Или я вижу проблемы там, где их нет?
Но насколько тяжелен один экземпляр UIViewController, который висит вокруг в стеке контроллеров? Даже если я выпущу все возможные данные, включая просмотры, все равно останутся некоторые вещи. Или не стоит обсуждать эти байты представления? – Krumelur
Это будут ваши свойства/переменные-члены плюс еще несколько «скрытых» переменных накладных расходов. Это отличное от нуля, но оно не огромно. –
Также см. Мое редактирование о создании собственного UINavigationController. –