Obj-C, как мне выпустить возвращаемое значение NSString? - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь получить значение NSString из своей базы данных в функции, однако я получаю предупреждения анализатора. Вот мой код ...

- (NSString*)getCategoryDesc:(int)pintCid { 
NSString *ret;
ret = value from my db ...  
return [ret autorelease];
}

Это не нравится

return ret;
return [ret retain];

1 Ответ

1 голос
/ 17 января 2011

Ключевой момент (который вы нам не показываете): что делает «value from my db»?

Если он делает что-то вроде:

ret = [[NSString alloc] initWithString:@"something"];

тогда вы несете ответственность за освобождение объекта, но если он делает что-то вроде

ret = [NSString stringWithString:@"something"];

вам не нужно выпускать его (и, действительно, вы НЕ должны).

Поскольку ваш метод называется «get *» (а не «create *»), вам необходимо вернуть объект, которому вызывающая сторона не владеет (как правило, это означает объект с автоматическим выпуском).

Ознакомьтесь с правилами политики владения .

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