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

标签 objective-c retain autorelease

如果我有一个自动释放的对象,它的保留计数(即我对其调用方法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 有一个保留属性,因此这是有意义的),退出此方法后,来自外部的调用同样会返回 2。

最佳答案

Don't look at retainCount 。这是误导性的。只要您按照Memory Management Programming Guide那你就没事了。

如果您将问题改为“默认自动释放池何时耗尽?”那么答案就是当控制流返回到运行循环时。

关于objective-c - 自动释放对象的保留计数何时递减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951727/

相关文章:

iphone - 有办法到达 "find mystery retains"...吗?

objective-c - 启动自动释放的 NSOperationQueue 是否危险?

objective-c - 自动释放 CFMutableDictionary

ios - GameplayKit GKPolygonObstacle 无法与 GKGoal 一起使用

ios - typedef struct 与 Object - 优点

ios - 将 maxlength 设置为特定的 UITextField

c - 不保留其值的静态变量

iphone - 为什么在 Objective-C 上保留属性可能不保留?

cocoa - Xcode/Cocoa ARC 和 MRC 类。 MRC 自动释放会导致 ARC 类中的内存泄漏吗?

ios - 如何将 unicode 十六进制数字变量转换为 NSString 中的字符?