2014-01-13 2 views
2

Would с использованиемДубликат NSString в Objective C

NSString* Test=[NSString stringWithString:@"Words"]; 

имеют каких-либо преимуществ по сравнению с

NSString* [email protected]"Words"; 

или это просто излишним?

+0

№ NSString неизменен, поэтому копирование не предназначено (кроме того, чтобы пережевывать время/пространство). Точно так же популярная '[NSString stringWithFormat: @"% @ ", someString]' является пустой тратой времени, предполагая, что 'someString' является (неизменной) NSString. И тот, который я видел ранее сегодня, '[NSString stringWithFormat: someString]', абсолютно опасен, поскольку 'someString' может содержать'% 'символов. –

ответ

2

Это избыточно. NSString объекты неизменяемы (не могут быть изменены), поэтому нет преимуществ, которые я могу видеть, используя литерал напрямую.

Если вы сделали следующее, однако:

NSMutableString *test = [NSMutableString stringWithString:@"Words"]; 

Тогда это другая история.

+0

Конечно, для вашей «другой истории» '[@" Words "mutableCopy]' более кратким и намерение более ясное. –

+0

@HotLicks Но дальше от собственного примера кода OP ... – trojanfoe

1

Любой современный ObjC компилятор предупредит вас, если вы попытаетесь создать экземпляр строки, как это ...

Использование «stringWithString:» с буквальным избыточна

Используйте @"literals", если вам на самом деле должны "работать" на входе, а-ля ...

NSString * w = [NSString stringWithUTF8String:"Words"]; 

или

NSString * join = [NSString stringWithFormat:@"con%@enate", @"cat"] 
Смежные вопросы