[問題] 簡單的程式就有 memory leak 了

作者: HuangJC (吹笛牧童)   2014-04-12 06:05:48
連續天天加班到凌晨,總算專案快出一版了
是中點,不是終點
最近試著用 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 啊
那記憶體佔用又是為什麼呢?
作者: HuangJC (吹笛牧童)   2014-04-12 06:06:00
又天亮了,唉
作者: darktt (小朱)   2014-04-12 07:31:00
有dealloc不代表物件有正確的Release
作者: uranusjr (←這人是超級笨蛋)   2014-04-12 09:34:00
要嘛去聘一個會的人不然就用別的吧, 都給你們猜就飽了啊
作者: yuanruo (罪を憎んで人を憎まず)   2014-04-12 11:36:00
我在上面各擺了兩百多個button 怎沒leak ?
作者: abcdefghi   2014-04-12 23:34:00
在dealloc裡用 CFGetRetainCount() 抓一下每個object的reference count, ARC也不是萬能,有些情況要人腦分析.
作者: chchwy (mat)   2014-04-13 20:10:00
ARC是即時釋放沒錯 沒釋放就是有地方沒寫好
作者: HuangJC (吹笛牧童)   2014-04-14 02:23:00
真的很感謝你們;雖然不知多久後又要害你們失望可是陌生人能如此給機會諒解對方,你們都很了不起..
作者: Teferi (太費力)   2014-04-15 12:35:00
印象中上課的老師有提過,iOS就是記憶體滿了才清除,機制也很像你所描述的方式原本的記憶體管理 release本來也是操作retain而已呀
作者: HuangJC (吹笛牧童)   2014-04-15 16:26:00
http://tinyurl.com/monh5na 程式來了http://tinyurl.com/la87dej 執行結果,可以看到記憶體愈吃愈多
作者: darktt (小朱)   2014-04-15 20:51:00
你需要開放權限出來,我用我的mail請求權限了,開頭是pippi的就是我的mail
作者: HuangJC (吹笛牧童)   2014-04-15 21:40:00
有看到;不懂的是我以為我給的網址就是公開權限了那程式不就也無法下載?
作者: atst2 (atst2)   2014-04-15 23:09:00
1. 根本沒有leak2. allocation表示的是現在在用的Memory,只要程式在跑就會有記憶體使用.3. Leak是看下面的leak欄位有沒有出現紅線.
作者: leslielion   2014-04-22 23:31:00
Please implement unwinding storyboard segue

Links booklink

Contact Us: admin [ a t ] ucptt.com