Я думаю, что реализация stringWithFormat: фактически реализована так же, как и ваша первая версия, что означает, что ничего не должно измениться. В любом случае, если есть какая-либо разница, вероятно, вторая версия не должна быть медленнее. Наконец, на мой взгляд, вторая версия немного более читабельна, так что это то, что я бы использовал.
учше (быстрее и эффективнее) использоватьalloc
или жеautorelease
Инициализаторы. Например.:
- (NSString *)hello:(NSString *)name {
return [[NSString alloc] initWithFormat:@"Hello, %@", name];
}
ИЛИ ЖЕ
- (NSString *)hello:(NSString *)name {
return [NSString stringWithFormat:@"Hello, %@", name];
// return [@"Hello, " stringByAppendingString:name]; // even simpler
}
Я знаю, что в большинстве случаев производительность здесь не должна иметь значения. Но я все же хотел бы привыкнуть делать это лучше.
Если они делают одно и то же, то я предпочитаю последний вариант, потому что он короче и более читабелен.
В Xcode 4.2 есть способ увидеть, к чему компилируется ARC, то есть куда он помещаетretain
, release
, autorelease
, и т.д? Эта функция будет очень полезна при переключении на ARC. Я знаю, что вам не нужно думать об этом, но это помогло бы мне найти ответ на подобные вопросы.