【发布时间】:2011-12-01 10:46:22
【问题描述】:
这是保留计数代码。
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSNumber *number = [[NSNumber alloc]initWithInt:10];
NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:0];
NSLog(@"retain count : %d",[number retainCount]);
[array addObject:number];
NSLog(@"retain count : %d",[number retainCount]);
[number release];
NSLog(@"retain count : %d",[number retainCount]);
[number release];
NSLog(@"retain count : %d",[number retainCount]);
[number release];
NSLog(@"retain count : %d",[number retainCount]);
}
return 0;
}
我的预期答案是
retain count : 1
retain count : 2
retain count : 1
retain count : 0
and then error
但实际运行结果如下。
[Switching to process 6363 thread 0x0]
2011-12-01 19:39:53.843 nsnumber[6363:707] retain count : -1
2011-12-01 19:39:53.846 nsnumber[6363:707] retain count : -1
2011-12-01 19:39:53.847 nsnumber[6363:707] retain count : -1
2011-12-01 19:39:53.847 nsnumber[6363:707] retain count : -1
2011-12-01 19:39:53.848 nsnumber[6363:707] retain count : -1
我无法理解这个结果。
为什么会出现这样的结果?
【问题讨论】:
标签: objective-c