我正在一个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,它是正确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top