popViewControllerAnimated:不会从内存中释放视图控制器



我有两个视图,第二个视图是从第一个视图推送的。为了进行测试,我从第一个视图转到第二个视图,然后返回到第一个视图。之后,我发送 ns通知,在我的第二个视图中,它收到我的通知。

1)我可以知道为什么弹出后我在第二个视图中收到通知吗?对于IBOutlets,我也声明弱属性。

2)如果它仍在内存中,对于其他数据,如nsdictionary,nsstring,我应该使用强属性还是弱属性?那些也会在记忆中吗?

3)如果我不想完全记住我的第二个视图,我该怎么办?

如果在"返回"第一个视图时未释放第二个视图控制器,则

  • 并没有真正"回去"——你不小心创建了一个新的第一视图控制器并推动它,这不太可能;或者:

  • 第二个视图控制器中有一个保留周期。

我敢打赌你确实有一个保留周期。您应该尝试追踪这一点。您提到了通知:将视图控制器设置为通知观察者时,很容易创建意外的额外保留,因此这可能是原因。

特别是,请参阅我的书中对这个主题的讨论:

  • 如果您调用addObserverForName:object:​queue:usingBlock:,您将泄漏(在 ARC 下),除非采取周密的预防措施(例如在块中进行弱强舞蹈,以避免强烈保留self)。

相关内容

  • 没有找到相关文章

最新更新