iOS4プロジェクトでXCode 4.0.2を使用しています。objective c - 警告クラスメソッドで作成された "オブジェクトの潜在的なリーク"
私はオブジェクトを構築するこのクラスのメソッドを持っています。これは、アプリの開始から終了までに時々必要となる定数です。
しかし、分析ツールを実行している、これは私のCのオブジェクトのための警告「オブジェクトの潜在的な漏れ」を与えます。
私は心配すべきですか?どうすれば修正できますか?
ありがとうございました
iOS4プロジェクトでXCode 4.0.2を使用しています。objective c - 警告クラスメソッドで作成された "オブジェクトの潜在的なリーク"
私はオブジェクトを構築するこのクラスのメソッドを持っています。これは、アプリの開始から終了までに時々必要となる定数です。
しかし、分析ツールを実行している、これは私のCのオブジェクトのための警告「オブジェクトの潜在的な漏れ」を与えます。
私は心配すべきですか?どうすれば修正できますか?
ありがとうございました
に変更します。このメソッドを使用するたびに、XYZ
の新しいインスタンスが作成されます(廃止予定)+new
メソッドを使用します。
クラスXYZ
の1つのオブジェクトがアプリケーションの最後まで持続するようにするには、いくつか変更する必要があります。最も簡単な方法は、クラス初期化時にこのオブジェクトを作成することです。どんなクラスの.mファイルには、我々は以下を追加し、ここを見ている:
static XYZ *instance = nil;
+ (void)initialize {
if (self != [ThisClass class])
return;
instance = [[XYZ alloc] init];
instance.X = ...;
instance.Y = ...;
instance.Z = ...;
}
そして、あなたのA
方法:
+ (XYZ *)A {
return instance;
}
Appleが提供するMemory Management Programming Guideをお読みください。
メソッド名の前には、new
というメソッド名(+[XYZ A]
)を接頭辞として使用して、メソッドの呼び出し元が受信したオブジェクトの解放を担当していることを確認する必要があります。メソッドの名前を+[XYZ newA]
に変更します。
メソッドの名前を変更したくない場合は、少なくとも自動解放されたオブジェクトを返す必要があります。最後の行をreturn [c autorelease];