2012-01-17 1 views
2

ARC環境でアプリケーションを作成していますが、ARCの前に書かれたサードパーティライブラリを使用しようとしています。関連するすべてのファイルで-fno-objc-arcフラグを使用していますので、コンパイルしていますが、プロジェクトは#ifndef __OBJC_GC_ブロックを使用してメモリーを解放します。アーク対応のアプリケーションで#ifndef __OBJC_GC_をリファクタリングする

1.)別のライブラリを探すか、自分で書いてください - これは種類の唯一の無料ライブラリです。これは明らかに理想的ではありませんので、私は正しいソリューションを決定しようとしています。 、と私は

2)は#ifndefのブロックを削除し、私の指を交差する快適なタックル感じていないことを十分に新たなんだ - 今日のプロジェクトで作業することはできませんが、それは私の次の計画

です

3.)ARC準拠のコードをリファクタリングし、-fno-objc-arcフラグを削除します。

は#2が動作するでしょうか? #3はどれほど難しく、コンパイラに__OBJC_GC_を定義させるのか? (私が使用しようとしているクラスは約4〜5つですが、かなり大きいです)

+0

ライブラリ自体が割り当てエラー(私のコンパイラ設定が間違っていたわけではありません)を作成していることを認識した後、私は最初に彼はARCバージョンのために書き直された最新のものに私をリンクさせるのに十分なほど素晴らしかったし、魅力的だった。 –

答えて

1

割り当てブロックが#ifndef __OBJC_GC_に囲まれているとします。 #ifndef - "定義されていない場合"です。

作者がnon-GCバージョンを正しく管理している場合は、これをそのまま使用する必要があります。 ifdefを削除したり、偽造する必要はありません。

コンパイラは、ARCをオンにしても、iOSにこのフラグを定義しないでください。 ライブラリ自体がこのフラグを明示的に設定していないことを確認してください。

+0

ARCを搭載したiOS 5もガベージコレクション環境ではありませんか?私はそれがそうだと思ったが、私は明確な答えを見出していない。 –

+0

もう少しデバッグを行いました。私が使用している非アークコードに割り当てエラーがあるように見えます。これが正解です。 –

0

私は別のオプションを検討することをお勧めします:プロジェクトのARCをオフにします。

+0

彼は言った。 – Krizz