在for循环中添加对象时发生泄漏

时间:2011-05-30 06:45:30

标签: iphone objective-c


        在我的程序中,在 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];
}

1 个答案:

答案 0 :(得分:2)

泄漏来自[place1 copy]。将其替换为[[place1 copy] autorelease]或使用临时变量,并在将其添加到mapArray1后将其释放。

来自the docs

如果您使用名称以“alloc”,“new”,“ copy ”或“mutableCopy”开头的方法创建对象,则您拥有对象的所有权(例如, alloc,newObject或mutableCopy),或者如果你发送一条保留消息。

另外,我怀疑你需要在每个周期中重新创建那些自动释放调查...