在我的程序中,在 mapArray1 中添加 place1 时内存泄漏
我在mapArray1
方法中发布了dealloc
。然后我还要泄漏我必须释放mapArray1
的地方?
place1 = [[NSMutableDictionary alloc] init];
for(i=0;i<[array count];i++)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[place1 setObject:@"1" forKey:@"ID"];
lati=[array1 objectAtIndex:i];
[place1 setObject:lati forKey:@"latitude"];
long i = [array2 objectAtIndex:i];
[place1 setObject:longi forKey:@"longitude"];
[mapArray1 addObject:[place1 copy]];
[pool release];
}
答案 0 :(得分:2)
泄漏来自[place1 copy]
。将其替换为[[place1 copy] autorelease]
或使用临时变量,并在将其添加到mapArray1后将其释放。
来自the docs:
如果您使用名称以“alloc”,“new”,“ copy ”或“mutableCopy”开头的方法创建对象,则您拥有对象的所有权(例如, alloc,newObject或mutableCopy),或者如果你发送一条保留消息。
另外,我怀疑你需要在每个周期中重新创建那些自动释放调查...