关于内存使用的问题

时间:2011-01-10 03:51:17

标签: iphone objective-c cocoa-touch memory-management

我有以下方法:

+(NSMutableDictionary *)getTime:(float)lat :(float)lon {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
    [dictionary setObject:hour forKey:@"hour"];
    [dictionary setObject:minute forKey:@"minute"];
    [dictionary setObject:ampm forKey:@"ampm"];

    return dictionary;
}

很多方法都被砍掉了,所以我觉得我需要池来处理方法中的其他东西。这是我的问题。我知道我需要发布以下对象:

[dictionary release];
[pool release];

但是,在我返回之前我无法释放字典,但是一旦我返回它,其余的方法就不会执行。我该怎么办?

1 个答案:

答案 0 :(得分:2)

你总是可以autorelease字典,从而确保它至少保留在内存中,直到getTime::返回。这很好地符合Cocoa上的内存范例,其中一个返回它创建(但不拥有)对象的方法,当它不再需要它时会在其上调用autorelease

当然,请确保将该字典保留在从getTime::接收该字典的任何代码中。