2010-12-07 5 views
0

はどうやって確認することができ、その配列は、メモリ内にしたかどうか?条件が正しい場合、私は私が配列にcount = 0が保持されているかどうかを確認するにはどうすればよいですか?

それを必要とする条件がコードに従っていることは、アレイ

if (array1) 
{ 
[array1 release]; 
} 

を解放するために正しい持ち

はあなたに

+1

度Probを使用すると、そのコードが実行される場合には、再度配列1偽となり、それが解放乗り越える文句を言わないことを保証することができる方法、あまりにも出てNIL必要があります。 – Rudiger

+1

リリースをnilに送信するのは完全に安全です。オブジェクトを解放する前にオブジェクトがnilであるかどうかを確認する必要はありません。 @ Rudigerのアドバイスは良いですが。すでに解放されたオブジェクトにリリースを送信することを止めます。 – JeremyP

答えて

6

あなたがobj-C上のオブジェクトの保持カウントをチェックするべきではありません。最高でもその数はデバッグにはほとんど役に立たず、最悪の場合、それは誤解を招きます。適切なメモリ管理手法を実践する場合、保持カウントを確認する必要はありません。あなたはメモリ管理に問題がある場合

、より多くのコードを投稿し、我々はあなたのどこに問題があるあなたが追跡することができます。また、あなたがこれを読んでいないなら、あなたはすべきです。

http://developer.apple.com/library/mac/ipad/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html%23//apple_ref/doc/uid/20000994-BAJHFBGH

-3

ありがとうございます。それを使って、配列がメモリにあるかどうかを調べることができます。配列を解放した後、nilも割り当ててください。それはメモリから完全に削除されます。

乾杯、 Raxit

+0

'nil'を指定しても「メモリから完全に削除されません」。 – bbum

0

は悲しいことに、あなたはそのretainCountよりも、それはnilであるかどうかを配列1他についての詳細を知る必要があります。あなたのプログラムをクラッシュさせたり、完全なゴミを返すことができますいずれかretainCountを呼び出して、他の場所でリリースされたオブジェクトを指している場合。


[autoreleaseについての私のコメントを削除 - 誤解されていました。上記まだ本当のまま!]

+0

保持/解放のガベージコレクタはありません。オブジェクトが解放され、割り当て解除される順序と時間は非常に決定的です。 – bbum

+0

申し訳ありませんが、自動解放プール上に再読み込み、自動解放について少し取り除きます。まだC#土地から調整!好奇心のためのURL:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html – MechEthan

関連する問題