时释放的对象添加到一个NSMutableDictionary
-
21-09-2019 - |
题
我正在一个iPhone应用程序,将构建体,在运行时,一个NSMutableDictionary针对(键值对)的值将是NSMutableArrays。作为有点新的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 *投入的结构中,首先检查以查看是否在对应于第二个参数(供应商ID)的键 - 值对的对象是零。如果是零,我ALLOC一个新的NSMutableArray,并设置它作为该键的对象,然后将其释放。假设我的dealloc了的NSMutableDictionary包含此方法的类的dealloc,将引用被释放?之前的dealloc-ING的的NSMutableDictionary,我需要通过它来运行和dealloc的包含在个人NSMutableArrays?
谢谢,
本乙
解决方案
当将对象添加到像字典或阵列的容器,留住将被自动调用,并且当松开容器作为你的问题是字典,它将调用的每一个对象的“释放”到的dealloc对象的存储器。
其他提示
此内存管理看起来正确的给我。你释放你alloc'd的一个副本,数组中存放的另一个参考,一旦你添加到它,所以净数为1,它是正确的。
不隶属于 StackOverflow