Оператор возврата IOS NSString - PullRequest
1 голос
/ 02 апреля 2012

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

NSString *c = @"test";  // "Local" string
NSString *d = [NSString alloc]initWithString:@"test"]; // "Heap" string

const char *c = "test";
return [NSString stringWithUTF8String:c]; // ??

Я не уверен, что возвращает оператор return в этом случае. Я бы написал что-то вроде ...

return [NSString alloc]initWithUTF8String:c];

или

return [NSString alloc]initWithUTF8String:c]autorelease];

Почему оператор return должен быть написан как выше?

Ответы [ 3 ]

3 голосов
/ 02 апреля 2012

[NSString stringWithUTF8String:c] возвращает автоматически выпущенный объект .. так же, как и [NSString alloc]initWithUTF8String:c]autorelease], но, как я понял из документации, [NSString stringWithUTF8String:c] не делает копию строки .. поэтому он быстрее

2 голосов
/ 02 апреля 2012

По соглашению stringWithUTF8String возвращает уже автоматически выпущенную строку

0 голосов
/ 02 апреля 2012

Я не уверен, в чем твоя проблема. Если вы не уверены в возвращаемом значении метода, проверьте документацию и получите ответ

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