我注意到在將我的Xcode更新爲4.2後,retainCount總是等於-1。我沒有在我的項目中使用ARC,我甚至嘗試創建新的項目和切換ARC選項,在項目設置,但下一行關閉工作真的很奇怪:XCode 4.2中的retainCount發生了什麼?
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
無論發生什麼事情,它都不是一個有用的方法,並且真的沒有理由使用它。 – FeifanZ
@beryllium - 不,'-retainCount'返回一個NSUInteger。嘗試將其格式化爲浮點數應該會導致LLVM下的編譯器錯誤,否則就會導致垃圾結果。無論如何,這只是[另一個不使用'-retainCount'的原因] http://stackoverflow.com/questions/4636146/when-to-use-retaincount/4636477#4636477)我很高興ARC把它變成編譯器錯誤 –