【发布时间】:2014-06-02 03:43:26
【问题描述】:
我正在使用instantiateViewControllerWithIdentifier 实例化一个视图控制器。当我在 ARC 设置中将 nil 分配给 VC 变量时,我是否必须期望它完全释放,否则故事板会保留它?
我正在使用 presentViewController 模态呈现视图控制器,然后在 vc 中将其关闭。但是,我没有看到正在调用 vc 的 dealloc 方法。
更新:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:NULL];
RViewControllerEx *viewController = (RViewControllerEx *)[sb instantiateViewControllerWithIdentifier:@"SB_RDVC"];
[self presentViewController:viewController animated:YES completion:nil];
- 我在 -dealloc 方法中有 NSLog 来确定它是否被调用
- 我正在使用局部变量,它没有立即解除分配
【问题讨论】:
-
不,情节提要不保留对您的控制器的引用。如果您将其关闭,并且自己没有任何强引用,则应在关闭动画完成后将其释放。
-
@rdelmar 是否有可能该视图控制器中的某些内容无法释放?例如保留自我超过要求等。
-
您是否有任何计时器正在运行,或任何其他长时间运行的进程?
-
嗯,那部分超出了我正在管理的代码,但我注意到有计时器,调度队列。
-
计时器保留它们的目标,所以如果你有重复运行的计时器,那么这将导致控制器被保留。您可以使 viewDidDisappear 上的任何计时器失效。
标签: ios objective-c memory-management uiviewcontroller automatic-ref-counting