Вопрос об использовании памяти - PullRequest
0 голосов
/ 10 января 2011

У меня есть следующий метод:

+(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 Ответ

2 голосов
/ 10 января 2011

Вы всегда можете autorelease словарь, тем самым гарантируя, что он хранится в памяти, по крайней мере, до тех пор, пока getTime:: не вернется. Это хорошо согласуется с парадигмой памяти в Какао, где метод, который возвращает объект, который он создает (но не владеет), вызывает autorelease для него, когда он больше не нужен.

Конечно, сохраняйте этот словарь в любом коде, который получает его от getTime::.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...