自动释放对象递减的保留计数何时减少?

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的时候。

【讨论】:

以上是关于自动释放对象递减的保留计数何时减少?的主要内容,如果未能解决你的问题,请参考以下文章

python如何让程序一直运行且内存资源自动释放?

何时释放/保留传递给辅助线程的对象?

目标 C:线程之间的自动释放对象?

何时释放带有“自动释放”的对象?

自动释放的对象何时真正释放?

如何释放Python占用的内存