自动释放对象递减的保留计数何时减少?
Posted
技术标签:
【中文标题】自动释放对象递减的保留计数何时减少?【英文标题】:When does retain count for an autoreleased object decrement? 【发布时间】:2011-02-09 23:16:17 【问题描述】:如果我有一个自动释放的对象,它的保留计数(即我在其上调用方法 retainCount 时返回的值)何时减少?我认为它是在分配对象的方法范围结束时,但我的测试并没有表明这一点。我有如下代码:
int itemIndex = 0;
NSArray* items = [mResponse componentsSeparatedByString:@","];
self.mText = (NSString*)[items objectAtIndex:itemIndex++];
self.mText = [mText gtm_stringByUnescapingFromURLArgument];
NSLog(@"retain count: %d",[mText retainCount]);
这将返回 2 作为计数(mText 有一个 retain 属性,所以这是有意义的),并且在退出此方法后,来自外部的调用同样返回 2。
【问题讨论】:
【参考方案1】:Don't look at retainCount。这是误导。只要你关注Memory Management Programming Guide就可以了。
如果您将问题改写为“默认自动释放池何时耗尽?”那么答案就是控制流返回到runloop的时候。
【讨论】:
以上是关于自动释放对象递减的保留计数何时减少?的主要内容,如果未能解决你的问题,请参考以下文章