1. ホーム
  2. objective-c

[解決済み] 一部のファイルに対する自動参照カウントの無効化

2022-04-20 05:27:37

質問

iOS 5 SDKをダウンロードしたところ、ARCは新しいAppleコンパイラの素晴らしい機能であることがわかりました。今のところ、多くのサードパーティフレームワークはARCをサポートしていません。新しいコードにARCを使い、現在のretain/releaseのコードは変更しないでおくことは可能でしょうか?JSONKitなどの一部のフレームワークは、コンバータを使用してもARCに変換できないため、ここではARCコンバータは機能しません。

編集する

答えは -fno-objc-arc をコンパイラのフラグに追加してください。Xcode 4では、ターゲット -> Build Phases -> Compile Sourcesで、これを行うことができます。

解決方法は?

公開されているARCのドキュメント この点について直接明確ではありませんが、各クラスがすべてARCまたはすべて手動で管理されている限り、クラスを単一のプログラムに統合することができることを示唆しているようです。

一つのクラスでARCと非ARCを混在させることができないだけで、ドキュメントには以下のように書かれています。 retain , release , autorelease または retainCount を使用するタイマーや遅延実行を含む)。 @selector ) は、ARCコードでは禁止されています。つまり、ARCクラスで非ARCを行うことはできず(必要なメッセージが禁止されているため)、非ARCクラスでARCを行うことはできません(ARCなしでは無効な構文要素が追加されるため)。

ARC以外のライブラリやフレームワークをARCプログラムに統合できるかどうかについては、同じ文書でもう少し明確に説明されています。はい。ARC以外のライブラリやフレームワークをARCのプログラムに組み込めるかどうかについては触れていませんが、上記のことを踏まえると、どうやら「イエス」ということになりそうです。