我从存储在NSUserDefaults中的数据定义了一些NSMutableArrays,如下所示:
nameArray = [[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"names"]]mutableCopy];
我将以dealloc发布。
nameArray在@interface的视图控制器头文件中定义,因为它的范围应该是整个类。
似乎存在与之相关的内存泄漏(Instruments漏电工具告诉我)。
有人看到我正在做的可能会导致泄漏的任何问题吗?
答案 0 :(得分:3)
摆脱mutableCopy
调用,你不需要它,因为你已经alloc/init
了NSMutableArray
:
nameArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"names"]];
mutableCopy
是罪魁祸首,因为它会增加接收者的保留计数(已经是1),因此当您在release
方法中调用-dealloc
时,保留计数会减少到1,而不是0。
您不需要调用mutableCopy
,因为您将数组传递给NSMutableArray
初始值设定项,这将初步使您的新数组变为可变。