連續天天加班到凌晨,總算專案快出一版了
是中點,不是終點
最近試著用 instrument 去抓 memory leak,卻發現記憶體吃得離譜
不得已又寫了個小程式,離開公司架構,小小的測試一下
寫得很簡單,就兩個畫面切來切去
1.開一個新程式
2.在 storyboard 上,擺一個 button
3.開一個新的 xib & UIViewController
4.新 xib 上也擺一個 button
5.coding
第一個 button,很簡單的載入 xib 檔,開始 MyViewController 而已
MyViewController* controller = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:nil];
[self presentViewController:controller animated:true completion:nil];
第二個 button,很簡單的關閉 MyViewController, 回到原來的 controller
[self dismissViewControllerAnimated:true completion:nil];
程式夠簡單了,抄書的
然後在兩個檔 ( storyboard & xib ) 上,擺一大堆 button
這麼做只是為了增加記憶體消耗,使結果明顯
執行,快速的按 button1 , button2, 讓畫面切來切去
就這樣竟然也有 memory leak
(不要只用 Xcode 的環境看,要打開 instrument 看,才明顯)
程式顯示,
[self presentViewController:controller animated:true completion:nil];
光這行都會吃記憶體
我可以理解的是,當我把 controller 傳入 present view 函式,它就被保留了
難道我必需自己把它移出刪除嗎?
這樣太不合理了!!
寫一個 -(void)delloc 來驗證,也會發覺在按下 close button 時有 delloc 啊
那記憶體佔用又是為什麼呢?