Re: [quiz] NSImage's leak
※ 引述《yllan (藍永倫)》之銘言:
: Cocoa 的記憶體管理不簡單啊~這裡有個小測驗,試試看吧:
: .
: .
: .
: 執行程式以後發現記憶體越用越多,用到開始吃 swap ,電腦越來越慢:直到回到
: runloop 或是程式結束時,才會一口氣釋放。出了什麼差錯?和 NSData 的範例一
: 樣,img 都有被 release 了啊!難道 release 並沒有真正 release ?還是哪裡有
: memory leak?
: 詳解:
: http://yllan.org/wordpress/index.php?p=123
不好意思把舊文搬出來討論。
最近又重新K了一次cocoa memory management
就想到你在這邊貼的文章
剛剛重看完詳解之後有個疑問,就是你說在loop裡放autorelease pool
看來用意是要release在loop裡allocate NSImage時
所附帶產生出需要autorelease的物件
是否是因為這些物件在產生NSImage物件過程中用了[xxx autorelease];
但是非得等到loop這個scope結束才會clean up,而且會clean up的原因
不是retain count為0,而是因為成為garbage。以上的理解正確嗎?
所以這樣說來,在[img release];時候把這些附帶產生的物件的retain count
減至1,還需要一個autorelease pool來將他們的retain count減至0
是這樣嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.143.246.193
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 7 之 11 篇):