2012-01-09 5 views
3

ARCプロジェクトでは、ARC以外のコード、つまりThree20を使用しています。私はすべての適切なコンパイラフラグを追加して、すべてうまく動作します。しかし、私はThree20クラスのいくつかをサブクラス化する必要があります。非ARCのために新しいファイルにコンパイラフラグを追加する必要があるかどうか、コンパイラが把握して適切なリリース呼び出しを追加するかどうかはわかりません。ただ、要約へXcode 4のARCプロジェクトに非ARCファイルをサブクラス化

: - XCodeの4 でARCプロジェクトは - 非ARCコード(Three20) が含まれています - 非ARCファイル で定義されている何かをサブクラス化する必要があります - 私は、リリースの呼び出しを追加する必要がありますか? - 非ARC用のコンパイラフラグをサブクラスに追加する必要がありますか?

答えて

2

はい、ARC以外のフラグ(-fno-objc-arc)とretain/releaseコールを追加する必要があります。

サブクラスでARCを使用している場合は追加しないでくださいが、問題を尋ねるだけなので、これをお勧めします。

+1

なぜトラブルを求めていますか?誰かがARC対応のUIViewControllerサブクラスを作るたびに、彼らはこれをやっています。 ARCはファイル単位で行われ、クラス単位またはクラス単位ではありません。そのため、ARC以外の基底クラスのARCサブクラスを作成することには全く問題はありません。 –

8

マイケル、

ARCは、メモリ内の指定されたスロットが現在のメソッド/関数呼び出しを超えて持続するかどうかに基づいて、保持/解放のセマンティクスを決定コンパイル時技術です。このため、ARCを使用して安全にサブクラスを混在させることができます。私はそれをすべて行う。私はカテゴリでもやっています。ガベージコレクションとは異なり、ARCは各メソッド/ファンクションの記憶領域にのみ集中しています。ところで、iOSのフレームワークのほとんどはまだARCを使用していないようです。したがって、フレームワーククラスを作成するサブクラスにはこの「問題」があり、それは問題ではありません。私は - XCodeの4 ARCプロジェクトは、 - - 非ARCファイルで定義されている何かをサブクラス化の必要性 - 非ARCコード (Three20)が含ま:ちょうど復習に

はあなたの特定の質問に答えるために リリースコールを追加する必要がありますか? - サブクラスに 非ARCのコンパイラフラグを追加する必要がありますか?

非ARCスーパークラスのサブクラスは、ARCでもなくてもかまいません。あなたのアプリケーションのデフォルト設定はARCなので、あなたのサブクラスには何もする必要はありません。

アンドリュー

関連する問題