看板 MacDev 關於我們 聯絡資訊
為了之前的問題,我跑去看了 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