2

私はついに私のiosプロジェクトをARCに変換しようとしています。ARCに変換したくないファイルがいくつかあるので、ビルドフェーズ->ソースをコンパイルするために「-fno-objc-arc」フラグを対応する*.mファイルに追加しました。

ただし、編集->リファクタリング-> ARCに変換しようとすると、「Objective-C ARCに変換できません:Xcodeは、変換を続行できない3つの問題を検出しました。すべてのARC準備の問題を修正して、再試行してください」というメッセージが表示されます。エラー

エラーはすべて、対応する*.mファイルの-fno-objc-arcを追加した*.hファイルにあります...*。hファイルにもフラグを追加する必要がありますか?もしそうなら、どこでそれを見つけることができますか?

ありがとう!

編集だから私はエラーをより明確に読んだ。私が問題を抱えているファイルはJSONKit.hです。エラーはJSONKit.mでは生成されませんが、JSONKit.hをインポートする私が作成した他のクラスでは、JSONKit.hをインポートする自分のクラスに-fno-objc-arcフラグを追加する唯一の解決策ですか?ありがとう

4

1 に答える 1

1

一時的な回避策(誰かがより良い提案をすることができない限り)

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オブジェクトを禁止しています」

別のstackoverflowの質問に続いて、行を次のように変更しました

__unsafe_unretained NSError * error;

そしてそれはコンパイルします...これまでのところうまくいくようです

于 2012-07-24T14:43:28.277 に答える