我有一个非常简单的程序,其中我只是创建一个对象并查看保留计数。
#import <Foundation/Foundation.h>
#import "GeometryCalculator.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
GeometryCalculator *calculator = [[GeometryCalculator alloc] init];
NSLog(@"Counter: %d", [calculator retainCount]);
[calculator release];
[pool drain];
return 0;
}
我期望我的retainCount为1,但它是16863520。
类GeometryCalculator完全为空。没有方法,没有实例变量。
最佳答案
您正在启用垃圾收集的情况下对此进行测试。 retainCount
的结果在垃圾回收中是不确定的,但实际上,它返回对象的指针值,因为这是最快的未定义操作(在本例中为0x1015120
)。
(Trivia:您也在32位进程中进行测试。如果它是64位进程,则由于Peter所指的截断类型,您将获得指针的高位字,这将是一个较低的值)
关于objective-c - Objective-C:为什么我的保留数不是1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3270655/