0

我是目标 C 的新手,我有一个 NSMutableArray,里面有 3 个对象,然后我尝试打印数组的 retainCount。为什么最终的 retainCount 返回 -1?谢谢

NSLog(@"myArray has retain count of %d", [myArray retainCount]);    
[myArray release];
NSLog(@"myArray has retain count of %d", [myArray retainCount]);

来自控制台的结果:

2010-10-17 11:58:06.407 TestRetainCount [527:a0f] myArray has retain count of 1
2010-10-17 11:58:06.407 TestRetainCount [527:a0f] myArray has retain count of -1
4

3 回答 3

3

在对象被释放后(可能在释放后发生),您不能再依赖其数据完好无损。您试图在它变得无效后信任保留计数。

一般来说,不要使用保留计数。曾经。使用内存管理编程指南中的规则,您将始终获得正确的引用计数。

于 2010-10-17T04:45:05.330 回答
1

Graham Lee 回答了您的示例所特有的问题。

不是针对您的示例,而是针对您的问题(主题):

UINT_MAX通常用于表示不使用引用计数的对象(例如,从不被释放,例如单例),或自定义引用计数实现。

于 2010-11-01T10:14:25.020 回答
-1

由于定时自动释放对象,不能依赖准确的 retainCount。也就是说,计算您的 alloc/init、new、retains 等...并与相应的版本匹配。

于 2010-10-17T04:48:24.667 回答