我有两个视图,第二个视图是从第一个视图推出的。为了测试,我从第一个视图进入第二个视图,然后我回到第一个视图。之后,我发送nsnotification,在我的第二个视图中,它收到我的通知。
1)我可以知道为什么我弹出后会在第二个视图中收到通知吗?对于IBOutlets,我也声明了弱属性。
2)如果它仍在内存中,对于nsdictionary,nsstring等其他数据,我应该使用强弱属性吗?那些还会在记忆中吗?
3)如果我不想完全记忆中的第二个视图,我该怎么办?
答案 0 :(得分:-2)
如果在“返回”第一个视图时未释放第二个视图控制器,则
你并没有“回头” - 你不小心创建了一个新的第一个视图控制器并推动它,这是不太可能的;或者:
您的第二个视图控制器中有一个保留周期。
我打赌你做有一个保留周期。您应该尝试跟踪此情况。您提到了通知:在将视图控制器设置为通知观察器时,很容易创建意外的额外保留,因此可能是原因。
请特别参阅此主题的my book's discussion:
addObserverForName:object:queue:usingBlock:
,你将会泄漏(在ARC下),除非采取精心预防措施(例如在街区进行弱强舞,以避免强烈保留self
)。