我在修复返回数组的内存泄漏方面存在问题,如何修复以下数组的内存泄漏?
NSMutableArray *retArr = [[NSMutableArray alloc] initWithCapacity:10];
for (int i=0; i < 10; i++) {
[retArr insertObject:[arr objectAtIndex:i] atIndex:i];
}
[arr release];
return retArr;
答案 0 :(得分:3)
除非方法名称以new,alloc,copy或mutableCopy开头,否则通常应该自动释放返回值。
return [retArr autorelease];
答案 1 :(得分:2)
在NSMutableArray上使用autorelease
NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];
for (int i=0; i < 10; i++) {
[retArr insertObject:[arr objectAtIndex:i] atIndex:i];
}
[arr release];
return retArr;
答案 2 :(得分:1)
您需要自动释放数组并将其放入autoreleasepool中,以便在一段时间后自动释放。
NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];
希望这会对你有所帮助。
答案 3 :(得分:0)
您可以在阵列上使用自动释放:
NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];
for (int i=0; i < 10; i++) {
[retArr insertObject:[arr objectAtIndex:i] atIndex:i];
}
[arr release];
return retArr;