作者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)
1F:→ yllan:myTitle 哪来的 autorelease pool 啊? 10/16 12:48
2F:→ Gsus:所以是我误解了!我以为每个function{}都有自己的autorelease 10/16 13:06
3F:→ Gsus:pool 10/16 13:06
4F:→ Gsus:那可以请问autorelease的scope嘛~? 10/16 13:11
5F:→ zonble:如果你没有特别指定,就是 NSApplicaiton 或 UIApplication 10/16 15:04
6F:→ zonble:的 autorelease pool 10/16 15:04
7F:→ Gsus:了解! 感谢感谢! 10/16 20:41