【发布时间】:2011-12-20 16:24:21
【问题描述】:
我注意到在将我的 Xcode 更新到 4.2 后,retainCount 总是等于 -1。我没有在我的项目中使用 ARC,我什至尝试创建新项目并在项目设置中将 ARC 选项切换为关闭,但下一行的工作方式非常奇怪:
NSString *string = [[NSString alloc] init];
NSLog(@"%i", [string retainCount]); //-1
[string retain];
[string retain];
[string retain];
NSLog(@"%i", [string retainCount]); //still -1
[string release];
[string release];
[string release];
NSLog(@"%i", [string retainCount]); //still -1
我错过了什么吗?我认为如果关闭 ARC 选项,项目将像以前一样工作..
【问题讨论】:
-
%d 怎么样?
NSLog(@"%d, [string retainCount]); -
不管发生了什么,它都不是一个有用的方法,而且真的没有理由使用它。
-
@beryllium - 不,
-retainCount返回一个 NSUInteger。尝试将其格式化为浮点数会导致 LLVM 下的编译器错误,否则会导致垃圾结果。无论如何,这只是another reason not to use-retainCount。我很高兴 ARC 把它变成了编译器错误。 -
我只是想玩一下块和 Block_copy,看看如何保留/释放它们。我尝试将编译器切换到 GCC,但即使我在 NSLog 中使用 %d 仍然得到 -1
标签: ios xcode4.2 automatic-ref-counting retaincount