允许UINavigationController推送可能导致重复堆栈的视图控制器是不好的做法吗?

bar*_*oon 5 iphone uiviewcontroller uinavigationcontroller

我正在使用UINavigationController构建一个应用程序,我在其中推送一个UIViewControllers,其中一个类的IBActions可以导致第一个类型的另一个实例被推送:

ViewControllerType1 - > ViewControllerType2 - > ViewControllerType3 - > ViewControllerType1

正如您所看到的,它可能没有"结束"堆栈.

这种不好的做法是不是有这样一个永无止境的循环?UINavigationController堆栈是否应该与'end'一起使用?

rob*_*off 2

如果用户期望的话,允许“循环”是可以的。

如果您期望(并希望允许)用户创建深堆栈,您应该尝试最小化每个视图控制器中的私有状态量。例如,如果堆栈上的两个视图控制器都向用户显示相同的信息,则应该使两个视图控制器共享保存该信息的同一底层对象。

didReceiveMemoryWarning您还应该确保每个视图控制器在收到消息时释放尽可能多的内容(如果该视图控制器不在堆栈顶部)。