2012-07-24 158 views
2

我終於嘗試將我的ios項目轉換爲ARC。有幾個文件我不想轉換爲ARC,因此我添加了「-fno-objc-arc」標誌來構建階段 - >編譯源文件到相應的* .m文件。但是,當我嘗試編輯 - >重構 - >轉換爲ARC時,我得到了「無法轉換爲Objective-C ARC:Xcode發現3個問題阻止了繼續進行轉換。修復所有ARC準備就緒問題並嘗試再次。」錯誤轉換爲ARC無法識別-fno-objc-arc標誌

錯誤都在* .h文件中,我爲其添加了-fno-objc-arc以獲取相應的* .m文件...是否必須將該標誌添加到* .h文件中檔案呢?如果是這樣,我在哪裏可以找到它?

謝謝!

編輯所以我更清楚地閱讀錯誤。我遇到的問題是JSONKit.h。這些錯誤不是在JSONKit.m中生成的,而是我編寫的其他導入JSONKit.h的類。因此,將-fno-objc-arc標誌添加到我自己的導入JSONKit.h的類的唯一解決方案是?由於

+0

聽起來像是在你身邊一個設計錯誤。你能發佈其中一個錯誤和相應的標題條目嗎? – Till 2012-07-24 11:38:48

+0

在轉換成ARC之前,你似乎通過添加他-fno ...標誌來混合隱喻。如果你有要保持「正常」的文件,爲什麼不把它們從你的目標中刪除,重構,然後將它們添加回來並添加標誌? – 2012-07-24 11:39:33

+0

嗨我做了一個編輯。突出顯示ARC限制錯誤的代碼行只是「#import」JSONKit.h「」。因爲我向JSONKit.m添加了-fno-objc-arc,所以JSONKit.m上的同一行沒有此錯誤。那麼我必須將標誌添加到我創建的導入JSONKit.h的類中嗎?我將來可能會有更多的類依賴於JSONKit;這不會是理想的...... thx – minovsky 2012-07-24 11:41:24

回答

1

臨時getaround(除非有人能提出更好)

我已經有在JSONKit.h以下錯誤

typedef struct { 
    JKParseOptionFlags parseOptionFlags; 
    JKConstBuffer  stringBuffer; 
    size_t    atIndex, lineNumber, lineStartIndex; 
    size_t    prev_atIndex, prev_lineNumber, prev_lineStartIndex; 
    int     errorIsPrev; 
    JKParseToken  token; 
    JKObjectStack  objectStack; 
    JKTokenCache  cache; 
    JKObjCImpCache  objCImpCache; 
    NSError   *error; 
} JKParseState; 

錯誤是在NSError線 - 「ARC禁止的Objective-C在結構或聯合的」對象

以下another stackoverflow question,我改變了線

__unsafe_unretained NSError *錯誤;

並將其編譯...似乎工作確定到目前爲止