4

プロジェクトでコードが混同されており、ARCのコーディングスタイルを適用しているものとそうでないものがあります。次に、いくつかのシンボルまたはフラグを設定するための解決策に出くわします:-fno-objc-arc

私の質問は、これらのフラグは何ですか?そして、これらの記号は-fno-objc-arcとはどういう意味ですか?これらはもっとありますか?

4

2 に答える 2

7

-fno-objc-arcフラグはコンパイラであり、リンカ用ではありません。これは、ObjectiveCコードがすべてのリリースと保持を手動で実行することをコンパイラーに通知します。これが必要なのは、新しく追加されたARCモードでは、、、、などの明示な使用が禁止されているためretainreleaseautoreleasedeallocです。セレクターからでも呼び出すことはできません。

すべてのコードをARCに変換するのは大きな作業になる可能性があるため、コンパイラーは古いスタイルと新しいスタイルの両方のコードをサポートします。コンパイルするファイルが古いか新しいかをコンパイラに通知する必要があります。あなたは-fno-objc-arc旗を渡すことによってそれをします。

他にも多くのコンパイラフラグがあります。これらを使用すると、コードのコンパイルと最適化の方法、エラーと警告の報告方法、ヘッダーが配置されているパスなどを制御できます。ターミナルウィンドウに入力man gccして、コンパイラオプションのリストを表示します。

于 2012-07-04T11:12:36.830 に答える
0

ARCは自動参照カウントの略です。AppleDeveloperサイトから取得した情報は次のとおりです。

自動参照カウント

Objective-Cの自動参照カウント(ARC)により、メモリ管理がコンパイラの仕事になります。Apple LLVMコンパイラでARCを有効にすることで、retainまたはreleaseを再度入力する必要がなくなり、クラッシュやメモリリークを減らしながら、開発プロセスを大幅に簡素化できます。コンパイラーはオブジェクトを完全に理解し、使用されなくなった瞬間に各オブジェクトを解放するため、アプリはこれまでになく高速に実行され、予測可能でスムーズなパフォーマンスが得られます。

古い非準拠のコードをコンパイルするときにARCが無効になることはよくあることです。

于 2012-07-04T10:23:17.420 に答える