【问题标题】:ViewController viewDidLoad after presentModalView called?调用presentModalView后的ViewController viewDidLoad?
【发布时间】:2012-01-04 19:52:58
【问题描述】:

我有一个名为“FirstViewController”的视图控制器。在 IBAction 中,我调用另一个名为“thePageFlipViewController”的 ViewController 并通过

将其推送到视线中

[self presentModalViewController:thePageFlipViewController animated:YES];

一段时间后,用户使用一个按钮关闭 PageFlipViewController,其中通过 FirstViewController 中的委托执行以下代码:

[self dismissModalViewControllerAnimated:YES]; [thePageFlipViewController release];

这是我的问题:

-viewDidLoadin FirstViewController 有时会在关闭thePageFlipController 后调用。我不明白为什么,因为firstViewController 应该住在后台。是否取决于模态视图显示多长时间? ARC有没有可能发布一些东西?

我的问题是,我在 viewDidLoad 中初始化了很多对象,如果再次调用 viewDidLoad,应用程序就会崩溃。我在那里为 RESTKit 定义了一些路由,RestKit 抱怨路由已经设置并且应用程序崩溃。

感谢任何帮助。

【问题讨论】:

  • 您是否也在实施 viewDidUnload ? (如果没有,你应该)
  • 这就是我现在需要做的!希望视图不会在后台发布。

标签: ios viewdidload presentmodalviewcontroller


【解决方案1】:

当视图没有实际显示时,可以将其卸载以释放内存。发生这种情况时,您会收到对viewDidUnload: 的调用,以便您可以释放您持有强引用的任何对象。然后下次需要视图时,viewDidLoad: 将在视图重新加载时再次被调用,您必须重新创建您在viewDidUnload: 中释放的对象。

参见 UIViewController 类参考的Memory Management section

另外this answer已经有很好的解释了。

【讨论】:

  • 这就是我所害怕的。感谢您的回答!我需要释放所有对象并重新分配它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多