内存泄漏在下面的简单代码中

时间:2013-09-24 06:09:49

标签: iphone objective-c memory-management memory-leaks automatic-ref-counting

我有一段代码&我想了解内存泄漏的可能性。我已浏览了Apple文档here

这里的代码处理来自参数&的数组。将字典存储到临时数组中。

+ (void)setLinkedProfiles:(NSArray *)profileData {
    NSMutableArray *returnArray = [[NSMutableArray alloc]init];
    if([profileData count] > 0) {
        for(NSDictionary *dict in profileData) {

            NSDictionary *tempDict = @{
                                   @"verifiedEmail" : ([[dict objectForKey:@"verifiedEmail"] isKindOfClass:[NSNull class]]) ? @"": [dict objectForKey:@"verifiedEmail"],
                                   @"identifier" : [dict objectForKey:@"identifier"],
                                   };
            [returnArray addObject:tempDict];
        }
    }
    [SharedApp sharedUserData].linkedProfiles = returnArray;
}

我怀疑代码行SharedApp sharedUserData].linkedProfiles = returnArray可能会造成内存泄漏。 我想了解为什么&在哪种情况下? 有人可以帮助我理解这个吗?

感谢您阅读&理解我的问题。

1 个答案:

答案 0 :(得分:3)

要清理:

你的行

NSMutableArray *returnArray = [[NSMutableArray alloc]init];

为您提供该数组的所有权。当你完成它时,你有责任释放它。

所以添加

[returnArray release];

因为最后一行会起作用。您可以使用autorelease代替,或者甚至从头开始使用自动释放的数组,即。

NSMutableArray *returnArray = [NSMutableArray array];

linkedProfiles应该是一个强大的参考(即strongcopy)。

虽然我强烈建议切换到ARC,但了解底层内存管理可能会很方便。