我有一个问题现在可能没有任何实际用途,因为 ARC 受到高度鼓励,但我正在研究内存管理,有些东西我不太明白。
我有这个方法
+(NSNumber *)releaseTooEarly
{
NSNumber *createdNumber = [[NSNumber alloc] initWithInteger:5];
NSLog(@"retain count before release: %d", createdNumber.retainCount); //Prints 2
[createdNumber release];
NSLog(@"%@", createdNumber); //Prints 5
return createdNumber;
}
- 如果对象刚刚创建,保留计数应该是 1 而不是 2?
- 我知道在这种情况下我应该使用 autorelease 以便我可以返回该值,并且调用者可以在它被释放之前使用它。我虽然如果我使用保留它会立即释放对象,但下一个 NSLog 显示它仍然存在,并且值成功返回。
我想知道我是否在一个不允许我在函数中释放对象的自动释放池中。
我知道我应该使用 ARC,但我只想了解这个结果的原因。