【问题标题】:popToViewController and memory managementpopToViewController 和内存管理
【发布时间】:2013-04-05 12:07:16
【问题描述】:

在我使用该语句的第三个视图控制器中,我将三个视图控制器推入了导航控制器

[self.navigationController popToViewController:(Main_View*) mainViewObj animated:YES];

它首先将我直接带到我指定的控制器。我已经在所有视图控制器的viewWillDisappear 方法中进行了一些编码以从NSMutableDictionary 中删除对象,我尝试使用断点进行调试,但它从未出现在viewWillDisappear,它直接将我带到Main_View。我应该担心从字典中删除对象或释放它吗?

【问题讨论】:

  • 写入 - (void)viewDidDisappear:(BOOL)animated
  • 我试过了,但只调用了最后一个视图控制器的 viewDidDisappear。
  • 老兄,当自动弹出视图时,您的 NSMutableDictionary 将被释放。
  • 是的,会的,那么我的其他任务呢,比如从中删除对象,或者例如在这种情况下我也想执行一些其他任务?我应该避免使用 poptoviewcontroller 而是使用序列 popviewcontroller 吗?
  • 您的要求是什么?

标签: ios objective-c uiview uinavigationcontroller poptoviewcontroller


【解决方案1】:

不会为其他视图控制器调用viewWillDisappear: 方法,因为当您将视图控制器推到它们上面时它们已经消失了。所以基本上,viewWillDisappear: 已经在较早的时候被调用了。再次调用它是没有意义的,因为它们一开始是不可见的。

【讨论】:

  • 是的,但我做了一个检查(if 语句),它只在你做 popviewcontroller 时被调用,pushviewcontroller 不会让它做我的任务,所以如果不是 viewwilldisappear 方法,那么最适合的方法是那个目的?
  • 取决于您实际尝试执行的操作...从您的问题中不太清楚为什么当视图控制器是时您需要从字典中删除一些对象弹出。你以后会重用这些视图控制器吗?如果没有,您可能想在dealloc 中执行“清理”任务。否则,您可能需要考虑子类化UINavigationController
【解决方案2】:

您可以尝试在 AppDelegate 中保留对 NSMutableDictanories 的弱引用,然后在 mainViewController 中的 poptoviewcontroller 获取它们之后,查看它们是否为 nil,如果不是,您可以从主视图中的字典中删除对象与那些参考。

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 2021-01-23
    • 2013-01-17
    • 2011-02-18
    • 2011-07-01
    • 2019-11-10
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多