【发布时间】:2013-03-13 12:33:00
【问题描述】:
我正在使用包含大约 5 个 ViewController 的导航控制器 segue。每个 ViewController 都位于另一个 ViewController 之前,例如安装应用程序。最后一个 ViewController 包含一个按钮,通过这句话可以让你回到第一个 ViewController:
[self.navigationController popToRootViewControllerAnimated:YES];
我的问题是,我怎样才能释放所有对象,ViewController,我在应用程序第一次执行期间存储的内存,当我单击按钮返回第一个 ViewController 时,将环境作为第一次执行。
有什么想法吗?谢谢!
【问题讨论】:
-
“我在第一次执行应用程序期间一直在存储”是什么意思?您是否对这些控制器中的任何一个保持强烈的指示?当您 popToRootViewController 时,如果您不保留指向它们的强指针,则应释放所有其他控制器。
-
我没有保留任何东西作为强指针(仅
nonatomic)。为了澄清你,一个例子是,在一个 ViewController 中,我有一个使用LocationManager对象的指南针。即使我调用 pop 方法,该对象仍然处于活动状态并正在升级...... -
如果使用它的控制器现在被解除分配,你怎么知道它仍然处于活动状态?
-
因为我有一个 NSLog,它每秒向我显示 LocationManager 包含每次升级的值
-
好的。我猜这些控制器是持有指向您要从堆栈中弹出的控制器的指针的控制器,因此您需要以某种方式将它们清零。
标签: ios objective-c release uistoryboardsegue