我有一個簡單的應用程序,它包含一個表格視圖,其中的每個單元格都有一個指向UIWebViewController的segue的側邊欄菜單(我正在使用SWRevealViewController)。因此,用戶可以打開邊欄並在各種配置的移動網站(除其他之外)之間切換。如何清理Storyboard Segues創建的UIViewController實例?
我已經正常工作,但我注意到,當我在側邊欄標籤之間來回切換時,在內存警告期間出現ping的控制器數量不斷增加。看來,每次切換標籤時都會創建一個新的UIWebVewController,除了框架代碼似乎保留了每個創建的控制器的列表並且永遠不會放開,導致內存不斷攀升。我敢肯定有,我可以清理名單的方式,但我還沒有找到它......
所以,我的問題是
- 它是什麼,是堅持到每個引用創建的UIViewController,以及哪裏可以找到/訪問?
- 我該如何清理?
- 什麼框架代碼/類負責調用
didReceiveMemoryWarning:
,這個人在哪裏得到需要接收警告的控制器列表?
在周圍搜索,我碰到this StackOverflow question,這暗示來了popViewControllerAnimated:
可能是我可以清理不需要的控制器,但如何我不知道哪一個對象,我應該是在打電話,因爲我不知道上面#1或#3的答案...
感謝您的答覆。 SWRevealViewController可能持有控制器,但即使它是,它也不是唯一持有引用的地方。蘋果的代碼就是調用didReceiveMemoryWarning的東西,因此,蘋果的代碼必須保存引用(或者蘋果正在調用委託方法來查找這些信息,如果是這樣的話,那是什麼方法?)。這是我需要清理的那些參考資料。如果蘋果永遠堅持,那麼這就是內存泄漏。必須有辦法告訴Apple的代碼,不再需要控制器,以便Apple可以放棄參考。 – Troy