2011-09-13 32 views
-2

私のアプリケーションには少し混乱があります。オブジェクトがリリースされたかどうかを確認してください。

オブジェクトがiPhoneにリリースされたかどうかを確認するにはどうすればよいですか?

+6

あなたはそれをチェックしないで、あなたのオブジェクトがリリースされているかどうかを知る方法でメモリを管理するのがよいでしょう。 –

答えて

12

申し訳ありませんが、間違った問題を解決しようとしています。

いくつかの簡単なルールに従えば、オブジェクトがリリースされたかどうかを「発見」する必要は全くありません。あなたは知るだろう。

簡単なルールがあります:あなたがアロケーション、コピー、またはオブジェクトを保持している場合

  • は、その後、あなたがそうでなければ
  • を、それを解放する責任がある、あなたはそれ
を解放するための 責任を負いませんです

retainCountを使用しないでください。オブジェクトの割り当てが解除された場合(つまり、保持カウントがゼロの場合)、はオブジェクトが存在しなくなったため、オブジェクトに対して操作を実行できません。また、たとえそれがであっても、現在というものがありますが、それは自動解放プールにはないと言いますが、は次回見るときにになりますか?

+0

+1正直な答え –

2

オブジェクトが解放された場合、そのプロパティにアクセスすることはできません。

プロファイラ(NSZombies)を使用して、どのオブジェクトが解放されてからアクセスされたかを検出できます。

+0

私の答えは間違っていますか?なぜ-1? – Nekto

2

ゾンビが有効になっているときにオブジェクトへのメッセージであれば十分です。あなたがゾンビをメッセージしたためにプログラムがクラッシュした場合、あなたは知っています!

計測器で参照カウントトラッキングを有効にしている場合は、各refカウントイベントの各フレームを確認し、無効なrefカウントオフセットが導入されている場所を確認できます。

関連する問題