我有以下方法:
+(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];
但是,在我返回之前我无法释放字典,但是一旦我返回它,其余的方法就不会执行。我该怎么办?
答案 0 :(得分:2)
你总是可以autorelease
字典,从而确保它至少保留在内存中,直到getTime::
返回。这很好地符合Cocoa上的内存范例,其中一个返回它创建(但不拥有)对象的方法,当它不再需要它时会在其上调用autorelease
。
当然,请确保将该字典保留在从getTime::
接收该字典的任何代码中。