我有一段代码&我想了解内存泄漏的可能性。我已浏览了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
可能会造成内存泄漏。
我想了解为什么&在哪种情况下?
有人可以帮助我理解这个吗?
感谢您阅读&理解我的问题。
答案 0 :(得分:3)
要清理:
你的行
NSMutableArray *returnArray = [[NSMutableArray alloc]init];
为您提供该数组的所有权。当你完成它时,你有责任释放它。
所以添加
[returnArray release];
因为最后一行会起作用。您可以使用autorelease
代替,或者甚至从头开始使用自动释放的数组,即。
NSMutableArray *returnArray = [NSMutableArray array];
linkedProfiles
应该是一个强大的参考(即strong
或copy
)。
虽然我强烈建议切换到ARC,但了解底层内存管理可能会很方便。