2011-01-03 4 views
2

私のコードには、もちろんその中のすべてのretain/release呼び出しがあります。 。 。ガベージコレクションを使ってmac appを書くのが簡単になるでしょうか?そして、retain/releaseについて何をしますか?MacにiOSアプリケーションを移植する - メモリ管理の扱い方は?

いずれの方法をお勧めしますが、関連するXcode設定に関する参考情報が参考になります。ありがとう。

答えて

4

でないことをお勧めします。はさまざまな理由からMacでGCを使用しています。あなたがすでにやっていることに固執してください。私はメモリを管理するためにGCに頼るとき、私が個人的にやっていない細粒度の制御をあきらめていると私は信じています。

あなたは既にiOSのような参照カウントの環境から来ているので、この時点ではあなたのところでもっと努力するつもりはないので、あなたはその環境にとどまることが賢明であると思います。

ビューコントローラとビューベースのコードをCocoaに移植する必要がありますが、あまり面倒ではありません。ビューの依存関係がないため、モデルをドロップすることができます。 (もちろん、それはあなたが1オンスの正気でそれをしたと仮定します)。

+0

LLVM rocks!........... –

+2

Cを使用することで、OPは既にアセンブラで書かれた細粒度の制御をあきらめています。 ;) –

+0

@quixoto母: –

1

それはそのままです。 GCを使用しないと、Mac上ではるかに高速に動作します。また、いつ物事が滞っているか、いつ行くのかをもっとコントロールし、最終的にはより安定したアプリケーションを提供します。

また、Macに書き込むものを移植するのが簡単になります。もしあなたがiOSに戻ったら、あなたは習慣を守るでしょう。

もしあなたがすでにメモリ管理をしているならば、それをやってください!

+2

実際には、ガベージコレクションを有効にするとパフォーマンスが少し向上する特定のアプリケーションがあります。このことについてもう少し詳しくは、Mike Ashの記事をご覧ください:http://www.mikeash.com/pyblog/perform_better_with_garbage_collection.html –

2

これまでに回答したことがあり、すぐにMac上でガベージコレクションを無効にしないように指示しているすべての人には正直に同意しません。私のMacアプリケーションはすべてガベージコレクションを使用しており、私が構築する新しいアプリケーションはすべてそうするでしょう。

ガベージコレクションが私を助けてくれたところでは、重大なマルチスレッドコードに膨大な問題があります。私は自分自身をメモリ管理に関してはかなり考えていると思っていますが、スレッド間での解放と自動解放を伴うエッジケースは、ガベージコレクションに変換するまで、大量のロボット制御ソフトウェアで時折クラッシュすることになりました。これらの問題はすべて後に解消され、全体的な安定性がはるかに向上しました(最新バージョンのいずれかでクラッシュすることなく6ヶ月間)。

MacとiOSで共有されるコードを開発する場合は、標準的なメモリ管理ルールに従って確実に書き込むことで、良い習慣を維持しながら、物事をコピーして前後に貼り付けることができるようにします。その後、Mac版のビルド時の設定としてガーベジコレクションを有効にして、漏れや逃してしまった場合のセーフティネットとして機能させることができます。この方法でコードを保存することはありませんが、これにより、ユーザーに配備されたときのアプリケーションの安定性が向上する可能性があります。

しかし、Core Imageのようなフレームワークはガベージコレクションではうまくいきませんので、アプリケーションの中の1つを使用する場合は、GCを避ける必要があります。

Mike Ash氏が記事 "Perform Better With Garbage Collection"で指摘しているように、ガーベッジコレクタがバックグラウンドスレッド上で動作するという事実は、マルチコアMac上の特定のアプリケーションではパフォーマンスが若干向上する可能性があります。たとえば、自動解放プールが排水されたり、他のオブジェクトの割り当てが解除されたりするため、タイトなループで時々見られるメインスレッドの停止を防ぐことができます。

-deallocがもはや下と呼ばれているので、最後に、私は、私は(それは本当に属していない場合)-deallocに非メモリ関連のクリーンアップコードを入れている場所を特定するために、ガベージコレクションの下で鉱山のクロスプラットフォームココアのコードをテストしていないのが好きガベージコレクション。これは私のコードをより良く設計するのに役立ちます。

関連する問題