我正在處理的iPad應用程序存在內存問題: 它只有3個視圖控制器和一個導航控制器。 我使用push segue將視圖控制器從A交換到B,然後使用push segue將視圖控制器交換到C,然後使用popToRootViewController指令再次將視圖控制器交給A.ARC和故事板的內存問題
我已經在所有的視圖控制器上實現了didReceiveMemoryWarning,只是爲了知道會發生什麼: 視圖B正確地從內存卸載,但視圖C似乎重複自身並消耗內存! 當我觸發內存警告,我可以看到幾個視圖C回答...
它看起來不像循環保留,因爲我宣佈我所有的父母引用爲弱,並且因爲泄漏儀器不檢測任何泄漏,也不保留週期,但記憶力增加。
,當使用真實iPad進行測試時,這會導致崩潰。
我該怎麼辦?我可以在哪裏看? 是否可以要求導航控制器釋放其所有以前的對象,但當前屏幕上的對象?
編輯:
鑑於didload,我增加了一些觀察家如下:
NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter];
[dnc addObserver:self selector:@selector(undoManagerDidUndo:) name:NSUndoManagerDidUndoChangeNotification object:undoManager];
[dnc addObserver:self selector:@selector(undoManagerDidRedo:) name:NSUndoManagerDidRedoChangeNotification object:undoManager];
是有可能,這樣做使該DNC保持一個參考保留自我的地方?
您必須發佈代碼。 :) –
代碼的哪些部分可能會有用? – Diwann
如果你的觀點是alloc/inited,發生「交換」,你的didReceiveMemoryWarning等 –