作者anpig (Andrew)
看板MacDev
标题Re: [quiz] NSImage's leak
时间Wed Nov 28 13:26:01 2007
※ 引述《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