Почему эта линия пропускает память? - PullRequest
0 голосов
/ 01 ноября 2011
[row setObject:[NSString stringWithCString:value encoding:NSUTF8StringEncoding] forKey:columnName];

где строка - NSMutableDictionary .. есть другой способ вставить эту строку в мой словарь?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Инструменты профилирования говорят, что, поскольку строка «автоматически освобождена», вы можете оптимизировать ее на

  • наложение NSAutoreleasePool вокруг него
  • alloc / init the str, затем отпустите его
  • или просто проигнорируйте сообщение оптимизации.

Это один из способов:

NSString *str = [[NSString alloc] initWithCString:value encoding:NSUTF8StringEncoding];
[row setObject:str forKey:columnName];
[str release];
0 голосов
/ 01 ноября 2011

У меня была эта проблема раньше, потому что NSMutableDictionary владеет объектом, он не будет выпущен, пока не будет выпущен Словарь.

Я бы предположил, что где-то в вашем коде объект освобождается без должного освобождения принадлежащих ему переменных, вероятно, NSMutableDictionary *row.

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