作者Gsus (肉元,吉米,助教)
看板MacDev
標題[問題] return autorelease物件何時會被release
時間Sat Oct 16 12:44:46 2010
為了之前的問題,我跑去看了 Memory Management Programming Guide
看完以後我對autorelease還是有些疑問
據我看的結論是,autorelease message是把物件放進autorelease pool裡
然後在run-loop結束時會drain pool,release pool中的所有物件
如果以這種邏輯來看
一個getter method
- (NSString *)myTitle {
NSString *aString = [[NSString alloc] initWithString:@"aString"];
return [aString autorelease];
}
應該在getter method結束時aString就應該會被myTitle的autorelease pool 給清掉了吧
但是實際上我發現getter method結束後aString不會被release
是到invoker的run-loop結束時才被release
目前卡在這,我想我的理解應該是沒錯,但是我測試的結果也不可能錯
所以就又跑上來問一下了XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.248.9.126
※ 編輯: Gsus 來自: 111.248.9.126 (10/16 12:45)
→ yllan:myTitle 哪來的 autorelease pool 啊? 10/16 12:48
→ Gsus:所以是我誤解了!我以為每個function{}都有自己的autorelease 10/16 13:06
→ Gsus:pool 10/16 13:06
→ Gsus:那可以請問autorelease的scope嘛~? 10/16 13:11
→ zonble:如果你沒有特別指定,就是 NSApplicaiton 或 UIApplication 10/16 15:04
→ zonble:的 autorelease pool 10/16 15:04
→ Gsus:了解! 感謝感謝! 10/16 20:41