【发布时间】:2010-11-24 10:51:43
【问题描述】:
为大块“o”文本道歉,但我有点像初学者,我正在尝试使用 UINavigationController 作为我正在编写的应用程序的一部分,我只是想知道我应该如何处理添加查看控制器到 UINavigationController 以及何时(如果有的话)我应该释放它们。
在我看来,添加视图控制器时有两种可能的方法:
对于管理类中的每个视图控制器都有一个实例变量。在将其推送到导航控制器之前对其进行初始化(如果实例变量为 nil)。随后在管理类的 dealloc 方法中释放视图控制器,如果它不是 nil。
将视图控制器创建为方法中的局部变量,并在立即释放之前将其推送到导航控制器。
但是,我不确定这些的有效性。 (我的直觉是使用实例变量方法,但这可能是由于我缺乏理解。)
再深入一点,我怀疑我的困惑与我不太了解我是否负责处理推送到导航控制器堆栈上的视图控制器,或者它是否负责当它们从视图控制器堆栈中弹出时,将自行处理它们。 (例如:当用户点击“返回”按钮时。)
如果是前者,那么我可以看到我需要使用实例变量方法并在管理对象中实现 UINavigationControllerDelegate 方法来确定我应该何时释放和取消每个视图控制器等。
最后(对于来世的奖励积分),您如何轻松判断一个方法是否会增加其参数之一的保留计数? (文档中似乎没有任何线索,但也许我遗漏了一些明显的东西。)例如,当我使用类似...
[[self navigationController] pushViewController:exampleVC animated:YES];
...这会增加视图控制器的保留计数吗? (再一次,我的直觉是它应该,但在这些危险时期,这与巧克力防火板的用途差不多,等等。)
提前致谢。
【问题讨论】:
标签: iphone objective-c ios uikit uinavigationcontroller