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

时间:2015-04-28 15:10:24

标签: ios objective-c popviewcontrolleranimated

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

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

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

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

1 个答案:

答案 0 :(得分:-2)

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

  • 你并没有“回头” - 你不小心创建了一个新的第一个视图控制器并推动它,这是不太可能的;或者:

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

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

请特别参阅此主题的my book's discussion

  • 如果你打电话给addObserverForName:object:​queue:usingBlock:,你将会泄漏(在ARC下),除非采取精心预防措施(例如在街区进行弱强舞,以避免强烈保留self)。