プロジェクトでコードが混同されており、ARCのコーディングスタイルを適用しているものとそうでないものがあります。次に、いくつかのシンボルまたはフラグを設定するための解決策に出くわします:-fno-objc-arc
私の質問は、これらのフラグは何ですか?そして、これらの記号は-fno-objc-arcとはどういう意味ですか?これらはもっとありますか?
プロジェクトでコードが混同されており、ARCのコーディングスタイルを適用しているものとそうでないものがあります。次に、いくつかのシンボルまたはフラグを設定するための解決策に出くわします:-fno-objc-arc
私の質問は、これらのフラグは何ですか?そして、これらの記号は-fno-objc-arcとはどういう意味ですか?これらはもっとありますか?
-fno-objc-arc
フラグはコンパイラ用であり、リンカ用ではありません。これは、ObjectiveCコードがすべてのリリースと保持を手動で実行することをコンパイラーに通知します。これが必要なのは、新しく追加されたARCモードでは、、、、などの明示的な使用が禁止されているためretain
release
autorelease
dealloc
です。セレクターからでも呼び出すことはできません。
すべてのコードをARCに変換するのは大きな作業になる可能性があるため、コンパイラーは古いスタイルと新しいスタイルの両方のコードをサポートします。コンパイルするファイルが古いか新しいかをコンパイラに通知する必要があります。あなたは-fno-objc-arc
旗を渡すことによってそれをします。
他にも多くのコンパイラフラグがあります。これらを使用すると、コードのコンパイルと最適化の方法、エラーと警告の報告方法、ヘッダーが配置されているパスなどを制御できます。ターミナルウィンドウに入力man gcc
して、コンパイラオプションのリストを表示します。
ARCは自動参照カウントの略です。AppleDeveloperサイトから取得した情報は次のとおりです。
自動参照カウント
Objective-Cの自動参照カウント(ARC)により、メモリ管理がコンパイラの仕事になります。Apple LLVMコンパイラでARCを有効にすることで、retainまたはreleaseを再度入力する必要がなくなり、クラッシュやメモリリークを減らしながら、開発プロセスを大幅に簡素化できます。コンパイラーはオブジェクトを完全に理解し、使用されなくなった瞬間に各オブジェクトを解放するため、アプリはこれまでになく高速に実行され、予測可能でスムーズなパフォーマンスが得られます。
古い非準拠のコードをコンパイルするときにARCが無効になることはよくあることです。