2013-01-17 53 views
0

我有一個非ARC項目,我添加了一個新文件併爲其設置了ARC編譯器標誌(-fobjc-arc)。當我打電話給[object release]時;在文件中,沒有編譯器錯誤拋出。我需要確定這個文件確實啓用了ARC,我怎麼能證明這一點?謝謝。我如何證明ARC正在工作?

+0

可能的重複:http://stackoverflow.com/questions/9462372/how-do-i-know-whether-the-compiler-has-arc-support-enabled –

+0

沒有。 dealloc仍然在那裏處理CF清理。 – uchuugaka

回答

6

在運行時沒有檢查ARC。不過,你可以在編譯時檢查它:

#if !__has_feature(objc_arc) 
    //Do the old stuff 
#endif 

希望有幫助。

+0

正是我在找的東西。我將編譯器標誌設置在錯誤的目標順便說一句...這是問題... – HackyStack

0

試試這個

#if __has_feature(objc_arc) 
    // ARC is On 
    NSLog(@"ARC on"); 

#else 
    // ARC is Off 
    NSLog(@"ARC off"); 

#endif 

希望它可以幫助你..

+0

這是完美的,從技術上講,所有3個答案都是正確的... – HackyStack

1

此外,如果你可以調用-release,ARC是關閉的。一旦打開,編譯器就會抱怨任何嘗試手動內存管理的情況,例如調用-retain,-release[super dealloc]