2012-07-08 121 views
12

我使用Xcode項目嚮導創建了一個支持ARC的項目。與沒有ARC支持的程序相比,我沒有注意到任何差異。是否有任何提示可以告訴我,如果我的程序支持ARC?如何知道我的程序是否啓用了ARC?

我使用的XCode 4.2.1構建4D502

+4

這是不尋常的所有.m文件:你已經有三個完全正確的,有用的和獨特的答案。 :) – 2012-07-08 05:07:52

回答

25

您可以使用__has_feature,也許記錄該項目是否具有ARC在控制檯這樣的:

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

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

#endif 

或者,而不是僅僅記錄是否ARC是,請嘗試如果ARC打開(或關閉)編譯器產生一個錯誤是這樣的:

#if ! __has_feature(objc_arc) 
    #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). 
#endif 
+0

我不能找到目標菜單?這是XCode的菜單嗎? – user705414 2012-07-08 03:58:40

+0

「目標」意味着您的應用程序在Xcode文件樹中名稱最多的條目。 – CodaFi 2012-07-08 03:59:50

+0

感謝qegal,我的編譯器標誌沒有任何東西。無論我選擇使用ARC還是不在嚮導中。 – user705414 2012-07-08 04:10:28

5

或者只是一次測試,在代碼中添加此:

NSString* dummy = [[[NSString alloc] init] autorelease]; 

如果您使用ARC,這應該會引發錯誤。如果有,ARC已啓用,一切正常,您可以再次刪除它。

18

如果你只是想知道一次,如果你的項目有ARC,我建議使用jpalten的答案。如果你想讓你的代碼只用ARC打造,我建議你使用qegal。

不過,如果你想知道在Xcode中設置生活:

  1. 選擇導航項目。這將打開項目編輯器。
  2. 在項目編輯器中,選擇您的目標。
  3. 在項目編輯器中,單擊Build Settings(如果它尚未被選中)。
  4. 在項目編輯器中,單擊搜索框並鍵入OBJC_ARC

這將使在構建設置顯示單行線,無論是的Objective-C自動引用計數CLANG_ENABLE_OBJC_ARC(取決於你正在展示設置描述或名稱)。如果它設置爲YES,那麼您的ARC已打開。

這是您的目標選擇是否使用ARC。請注意,每個文件都可以使用不同的設置進行編譯。這是而不是你問了什麼,但既然我們已經有三個答案,我想我可能會排在第四位。 :)

看看哪些文件覆蓋ARC設置:

  1. 選擇導航項目。這將打開項目編輯器。
  2. 在項目編輯器中,選擇您的目標。
  3. 在項目編輯器中,單擊構建階段(而不是構建設置)。
  4. 展開編譯源構建階段。

在這裏,您可以看到每個文件的編譯器標誌。設置是否使用ARC的文件將包括分別指定MRR或ARC的-fno-objc-arc-fobjc-arc

+0

被標記爲有用,因爲還通知新手ARC可以被某些文件覆蓋。這可以爲我節省很多擺弄我的ARC課前文件!這有什麼問題嗎? – cate 2013-01-07 12:58:50

+0

靜態分析器不會指出什麼 - 主要是確保未由ARC編譯的代碼遵循引用計數慣例(相對於將事件返回爲+1或自動釋放)。 – 2013-02-14 19:26:16

1

加「-fno-objc弧」的編譯器標誌在構建階段

相關問題