4

ARCが有効なObjective-Cプロジェクトにライブラリのヘッダーファイルを含めました。ARCを有効にしたreinterpret_castの使用

特にこれらの行は、私はARCを有効にしてライブラリがコンパイルされていない知っているが、問題は、ライブラリのヘッダファイルです:

Cast of an Objective-C pointer to 'char *' is disallowed with ARC 

は、次のとおりです。

template <typename Type_> 
static inline Type_ &MSHookIvar(id self, const char *name) { 
    Ivar ivar(class_getInstanceVariable(object_getClass(self), name)); 
    void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar)); 
    return *reinterpret_cast<Type_ *>(pointer); 
} 

が、私はこのエラーを取得しますこのエラーを修正することは可能ですか?

全体のヘッダファイルは、ここで見つけることができます:http://puu.sh/sTrH

+0

それは、C VARタイプににObjC VARタイプをキャストすることは不可能です。 – Feo

+0

'void * self'を使ってみてください。 – Feo

+0

あなたはそれを修正することができましたか? – Osa

答えて

5

あなたはこれにpointerの初期設定を変更する必要があります。

void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>((__bridge void *)self) + ivar_getOffset(ivar)); 
+0

なぜアップル以外のヘッダーは常に変更する必要がありますか? –

-1

は、プロジェクトのターゲットに移動し、ビルドフェーズ]タブを選択します。コンパイルソースセクションを開き、そのヘッダーファイルを見つけます。コンパイラフラグ "-fno-objc-arc"を引用符を除いて追加します。これにより、そのファイルが定期的にコンパイルされ、コードが非アーク環境で動作することを前提として問題を修正する必要があります。

+0

ヘッダーはコンパイルされません。 – Tyilo

関連する問題