1

私はメモリ管理のためのGCと自動参照カウントを行うフレームワークを使用するアプリケーションを持っています。私はそれを構築しようとした際、私はこのエラーを取得する:GCアプリケーションをARCフレームワークにリンクできますか?

Linked dylibs built for retain/release but object files built for GC-only for architecture x86_64 

は、それを変更することなく、このGCアプリケーションでARCのフレームワークを使用する正しい方法はありますか?私はARCコードが非ARCコードでうまく動作することを覚えていますが、ファイル単位のコンパイラスイッチ(-fobjc-arc)しか見つけられません。

+0

フレームワークとアプリケーションは別々のプロジェクトにあり、ワークスペースごとにまとめられています。 – febeling

答えて

1

番号ARCコードは、手動保持リリースコードで動作しますが、GCコードでは動作しません。ガベージコレクション専用に構築されたフレームワークは、手動保持リリースコードまたはARCのどちらでも動作しません。 GCオプションモードで構築されたフレームワークは、両方とも同じように動作します。

+0

なぜですか?私は一般的にGCを備えたフレームワークを使用できますが、そのほとんどは手動でメモリ管理されています。そしてARCは、そうでなければ手作業によるメモリ管理としてコンパイラに自動的に行わせるものとして説明されています。 – febeling

+0

あなたは間違っています。 GCと手動のRRコードを一緒に使用することはできません。 –

+0

手動でメモリ管理されたフレームワークにGCを「サポート」することが可能であり、かなり広く実践されています。私はちょうどそれを見た。それは私がコメントで "私は一般的に何でも使うことができる"と言っているのです。それは明らかに広すぎました。アップル社のプレインストールされたフレームワークはすべてそのように機能しているようだが、多くの主流のオープンソースのものもそうである。そういう意味で私は間違いではない、あなたは同意しますか? – febeling

関連する問題