Когда выпустить переходной NSString StringWithFormat? - PullRequest
2 голосов
/ 25 апреля 2011

Пожалуйста, помогите новичку в разработке iPhone.В моем приложении я часто это делаю, и Instruments показывает это как утечку.Как правильно сделать это?

Я пытаюсь переформатировать числовые данные в виде строки для использования в объектах NSMutableDictionary.Поэтому я подумал, что было бы здорово, если бы я сделал что-то вроде этого:

[myDict setObject:[NSString stringWithFormat:@"%d", section] forKey:@"Category"];

Я бы не хотел писать для этого 3 строки ...

NSString *cat = [NSString stringWithFormat:@"%d", section];
[myDict setObject:cat forKey:@"Category"];
[cat release];

Если бы яДолжен ли я, но какова лучшая практика для такого кратковременного использования?

Ответы [ 2 ]

8 голосов
/ 25 апреля 2011

Вам не нужно выпускать его. Поскольку stringWithFormat не начинается с alloc, init, new, copy или mutableCopy, вы не несете ответственности за его освобождение, если вы явно не сохранили его.

Когда Instruments показывает вам утечку, она показывает, где был выделен утечка объекта, но не обязательно код, который фактически вызывает утечку. Я подозреваю, что вы протекаете myDict, и, следовательно, все объекты внутри него также протекают.

3 голосов
/ 25 апреля 2011

Вы никогда не выпускаете это. Он уже выпущен автоматически.

Вы когда-либо выпускаете только те объекты, которые были переданы вам методами, имена которых начинаются с +alloc, +new -copy, -mutableCopy или -retain. Если имя начинается с чего-то еще, вы не являетесь его владельцем и не несете ответственности за его освобождение.

...