Выпуск содержимого NSMutableDictionary? - PullRequest
6 голосов
/ 08 июня 2011

В моем методе класса для теста есть следующий код:

NSMutableDictionary * temp = [[NSMutableDictionary alloc] init];
[temp setObject:@"4" forKey:@"Interval"];
interval = [temp objectForKey:@"Interval"];
[temp release];

интервал - моя переменная экземпляра:

NSString * interval;

и метод получения для него (это не свойство):

- (NSString *) getInterval {
   return interval;
}

В каком-то другом классе я пытаюсь использовать метод getInterval следующим образом:

NSString * test = [MyObject getInterval];

getInterval возвращает мне правильное значение 4, я вижу его в отладчике. Я не могу понять, потому что, как я понимаю, указатель на переменную экземпляра интервала должен быть свободным с temp NSMutableDictionary. Почему так случилось?

1 Ответ

8 голосов
/ 08 июня 2011

@"4" является литералом / константой NSString объекта, и литерал / константа NSStrings никогда не освобождаются - вот почему вы все равно можете ссылаться на эту строку, даже если теоретически она должна была быть освобождена (при условии, что словарь былтолько владелец).

Это, конечно, не означает, что вы не должны соблюдать надлежащие правила управления памятью.Если вы хотите сохранить interval, вам следует сохранить или скопировать его, возможно, через объявленное свойство.

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