私は、実行時に (キーと値のペアの) 値が NSMutableArrays になる NSMutableDictionary を構築する iPhone アプリに取り組んでいます。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];
}
}
supplyPhotos は、包含クラスのメンバー変数である NSMutableDictionary です。
ご覧のとおり、構造体に入れる新しい UIImage* を受け入れるときは、まず、2 番目の引数 (supplierID) に対応するキーと値のペアのオブジェクトが nil かどうかを確認します。nil の場合は、新しい NSMutableArray を割り当て、そのキーのオブジェクトとして設定してから解放します。このメソッドを含むクラスの dealloc で NSMutableDictionary を dealloc すると仮定すると、参照は解放されますか? NSMutableDictionary の割り当てを解除する前に、それを実行して、含まれている個々の NSMutableArray の割り当てを解除する必要がありますか?
ありがとう、
ベン B.