Управление памятью - Цель C NSString - PullRequest
0 голосов
/ 11 января 2011

У меня есть NSMutableDictionary с именем «output», и я добавляю в него строку NSString, которая является целым числом.Как правильно это сделать?Я не могу понять это.Все, что я пробовал, заканчивалось утечками памяти.

Вот что у меня сейчас:

val - это int

countryName - это NSString

Вот как я объявляю «выходные данные»:

NSMutableDictionary *output = [[[NSMutableDictionary alloc] init] autorelease];

Вот код, который вызывает утечку памяти:

NSString *temp = [NSString stringWithFormat:@"%d",val];
[output setValue:temp forKey:countryName];

Следующее также вызывает утечку:

 NSString *temp = [[NSString alloc] initWithFormat:@"%i",val];
 [output setValue:temp forKey:source];
 [temp release];

Ответы [ 3 ]

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

инструментов указывает на источник создания утечки объекта. Ваш фрагмент кода в порядке. это означает, что в дальнейшем вы получите доступ к значению из выходных данных (или самому temp) и перенастроите его с этого сайта.

0 голосов
/ 23 ноября 2011

Вы должны сделать копию значения и затем вернуть setValue в изменяемый словарь.Затем отпустите.

NSMutableDictionary *copyOfItem = [item copy];
[tmpMarkers addObject: copyOfItem];
[copyOfItem release], copyOfItem = nil;
0 голосов
/ 11 января 2011

Попробуйте напечатать временную переменную, как это

NSLog("number = %d", [temp intValue]);

чтобы убедиться, что временная переменная хранит целочисленную переменную или нет.

вы также можете опубликовать код, который вы использовали для объявления NSMutableDictionary, может быть, мы можем найти там какую-то проблему объявления.

...