Создает ли XCode один объект для всех пустых строк? - PullRequest
2 голосов
/ 14 января 2011

Я заметил, что все объекты @ "" создают одну ссылку на все время выполнения.

NSString *s1=@"";
NSString *s2=@"";

В этом примере s1 равно s2.

@ "" создаст один указатель во всех случаях, каждый раз, когда я его использую?

Могу ли я рассчитывать на эту функцию при сравнении строк в target-c?

Или просто, могу ли я использовать это утверждение, если хочу убедиться, что моя строка пуста:

 if(s == @""){
 //do something
 }

Ответы [ 2 ]

4 голосов
/ 14 января 2011

Да Цель C имеет оптимизацию в компиляторе, которая просто указывает все эквивалентные строковые литералы на одну и ту же строку в памяти, чтобы избежать выделения ненужных ресурсов.Эта функция надежна, но есть вероятность, что это не всегда будет происходить, как описано в спецификациях языка Objective C.

2 голосов
/ 14 января 2011

вы должны использовать

if([s isEqualToString:@""])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...