NSMutableDictionaryに追加されたオブジェクトを解放するとき
-
21-09-2019 - |
質問
私は、実行時に、構築しますiPhoneアプリ、(キーと値のペアの)値がNSMutableArraysされるためNSMutableDictionaryに取り組んでいます。 Objective-Cのに幾分新しいので、私は次のようにメモリリークが発生することを懸念しています:
- (void) addNewSupplierPhoto:(UIImage*)image toSupplierID:(NSInteger*) supplierID{
NSMutableArray* supplierPhotoArray = [supplierPhotos objectForKey:supplierID];
if(supplierPhotoArray == nil)
{
supplierPhotoArray = [[NSMutableArray alloc] init];
[supplierPhotos setObject:supplierPhotoArray forKey:supplierID];
[supplierPhotoArray release];
}
}
supplierPhotos含むクラスのメンバ変数であるNSMutableDictionary、である。
あなたが見ることができるように、私は新しいUIImageを受け入れていたときには、* Iは、第一、第二引数(仕入先)に対応するキーと値のペアのオブジェクトがnilであるかどうかをチェックし、構造体に入れます。 nilであると、私のalloc新しいNSMutableArrayのとそのキーの対象として設定し、それを解放します。私は、このメソッドを含むクラスののdeallocでNSMutableDictionaryをDEALLOCと仮定すると、参照が解放されるのですか? dealloc-INGのNSMutableDictionaryを前に、私はそれを介して実行する必要がありますかとのdealloc個々NSMutableArraysは?
内に含まれますおかげで、
ベン・Bます。
解決
あなたは辞書や配列などのコンテナにオブジェクトを追加します。
、保持が自動的に起動され、あなたがあなたの質問それの辞書のような容器を離すと、そのオブジェクトのメモリをDEALLOCするすべてのオブジェクトの「解放」を呼び出します。
他のヒント
は、このメモリ管理は、私には正しく見えます。あなたは1つがあなたがalloc'dてきたコピー解放し、そしてあなたはそれに追加すると、ネットカウントが正確である1であるので、配列は、別の参照を保持しています。
所属していません StackOverflow