→ HuangJC:又天亮了,唉 04/12 06:06
→ darktt:有dealloc不代表物件有正確的Release 04/12 07:31
這個知道
但這麼簡單的 sample,又是抄書的
這樣也不行
總不能叫我把 storyboard & xib 中,
所有的物件用 for loop 一個個 remove from super view 吧!
;;
聽主管在'猜'(沒經驗,也只能大猜特猜了)
那些記憶體是暫時沒釋放,等空間不足時就會被整理釋出
這是什麼思維?這不就是 GC 嗎?
所謂用一個 thread 去繞行所有物件,找到沒被 reference 的就自動刪除
thread 不一定何時做這件事;ARC 不是這樣吧!!
以 ARC 是 compiler 自動插入 retain & release 來說
我以為記憶體的釋放會是即時的
※ 編輯: HuangJC (60.251.197.63), 04/12/2014 08:40:34
→ uranusjr:要嘛去聘一個會的人不然就用別的吧, 都給你們猜就飽了啊 04/12 09:34
這... 我是兵,我不用扛這責任
主管可要挨罵了:養你做什麼吃的
不過事實上是那人請來,我就可以走路了 XDDDD
我們還是有些鬼才啦,從不懂到懂,到弄出東西...
→ yuanruo:我在上面各擺了兩百多個button 怎沒leak ? 04/12 11:36
我下週上班時把自己程式壓縮一下,可以給大家下載;這樣最沒爭議
然後測試步驟... 這很難表達,但那麼簡單應該沒問題
再來就是抓幾個畫面吧..
有畫面才有真相啊..
※ 編輯: HuangJC (175.180.126.61), 04/12/2014 14:35:02
推 abcdefghi:在dealloc裡用 CFGetRetainCount() 抓一下每個object的 04/12 23:34
→ abcdefghi:reference count, ARC也不是萬能,有些情況要人腦分析. 04/12 23:35
推 chchwy:ARC是即時釋放沒錯 沒釋放就是有地方沒寫好 04/13 20:10
→ HuangJC:真的很感謝你們;雖然不知多久後又要害你們失望 04/14 02:23
→ HuangJC:可是陌生人能如此給機會諒解對方,你們都很了不起.. 04/14 02:24
→ Teferi:印象中上課的老師有提過,iOS就是記憶體滿了才清除,機制也很 04/15 12:35
→ Teferi:像你所描述的方式 04/15 12:36
→ Teferi:原本的記憶體管理 release本來也是操作retain而已呀 04/15 12:37
→ HuangJC:愈吃愈多 04/15 17:09
→ darktt:你需要開放權限出來,我用我的mail請求權限了, 04/15 20:51
→ darktt:開頭是pippi的就是我的mail 04/15 20:51
→ HuangJC:有看到;不懂的是我以為我給的網址就是公開權限了 04/15 21:40
→ HuangJC:那程式不就也無法下載? 04/15 21:40
→ atst2:1. 根本沒有leak 04/15 23:09
→ atst2:2. allocation表示的是現在在用的Memory,只要程式在跑 04/15 23:10
→ atst2:就會有記憶體使用. 04/15 23:10
→ atst2:3. Leak是看下面的leak欄位有沒有出現紅線. 04/15 23:10
謝謝,拖了一天;週一忙,週二想吐 Orz
1. 說沒有 leak 我懂;這是我長期以來的筆誤
試考量這樣的狀況
@interface MyController
@property id View;
@end
@interface MyView
@property id Controller;
@end
也就是說, 元件 A 內部有指標指向元件 B
然後元件 B 內部又有指標指回元件 A
因為元件 B 的緣故,所以元件 A 的 ref count 不會歸 0
造成無法自動釋放; 這問題可用 weak 指標解決
而沒解決之前,記憶體佔用不會解決;這不叫 leak, 不過我不知這該叫什麼
我擔心的是這種
2. 以 C/C++ 來說,因為沒有 arc, 我自己控制
我還算可以理解 leak 是怎麼產生的
BYTE* p = new BYTE[10];
// delete[] p;
p = null;
這樣就好,因為我沒先釋放 p 就把指標歸0了,
這樣誰還能存取那塊空間? 沒有..
沒有就是 leak 了
但在 ARC 控制之下, 在這裏, p = nil 就足以指示一個釋放指令
所以我反而想請教: 怎麼寫一個最短的 leak demo
因為我以為, 如果我可以把 ref count 歸 0,那 arc 都會幫我釋放
3. "只要程式在跑,就會有記憶體使用"
可是我的狀況是不斷的按按鍵,讓畫面在兩個畫面間跳
(雖然這裏不是用 push/pop 來寫, 而是用 present/dismiss)
所以當我跳回原畫面時, 記憶體佔用不該恢復原貌嗎?
這樣愈吃愈多是正常的? (我的畫面就是一直按而產生的,按愈多下記憶體佔用愈多)
謝謝
※ 編輯: HuangJC (175.180.126.61), 04/16/2014 03:38:11
推 leslielion:Please implement unwinding storyboard segue 04/22 23:31