【问题标题】:Are there scenarios where dealloc will get called without viewWillDisappear not being called?是否存在在不调用 viewWillDisappear 的情况下调用 dealloc 的情况?
【发布时间】:2015-12-21 20:53:22
【问题描述】:

在控制器中,我们在viewDidAppear 中添加了观察者,并在viewWillDisappear 中删除了它。 init/viewDidLoad中没有观察者。

在这种情况下,出于安全目的/dealloc 方法中是否需要以下行?

[[NSNotificationCenter defaultCenter] removeObserver:self];

现在的问题/疑问是有没有dealloc 会被调用而viewWillDisappear 不会被调用的场景?什么时候调用内存警告。在这些情况下会发生什么?

谢谢。

【问题讨论】:

  • 到目前为止,我对我的代码很满意 viewwilldisappear 将被调用,但我会等待答案。讨论中提出的一种情况是有人建议视图可能不会在内存警告中消失。如果发生这种情况,即使稍后在视图消失时调用代码,代码也会在 viewdiddisappaer 中正常运行。

标签: ios objective-c


【解决方案1】:

一种情况是:

  1. VC1 实现了 HelperVC 类,它是代表并添加了 HelperVC 作为它的子视图。
  2. HelperVC 上的关闭按钮调用closeAll 委托方法,该方法在VC1 中实现。
  3. VC1 中的closeAll 方法将HelperVC 对象设置为nil
  4. 现在dealloc 方法在HelperVC 中调用,而不是viewWillDisappear。因为我们没有删除HelperVC 视图,所以我们将HelperVC 对象设置为nil

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2017-03-30
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多