@""
является литеральной строкой и будет существовать на протяжении всего выполнения приложения.[NSString string]
, вероятно, является динамически размещаемым объектом (но может быть оптимизирован, чтобы не быть), и поэтому (теоретически) может собираться во время выполнения, когда на него больше нет ссылок.И буквенные строки, и динамически размещенные используют внутреннее совместное использование, поэтому две @""
или две [NSString string]
могут возвращать один и тот же объект - даже если не в одном и том же файле - но нет гарантии, что они это сделают.Однако они могут не возвращать один и тот же объект друг другу.
В целом, это не имеет значения, вы не должны полагаться на равенство указателей для проверки равенства строк.
Просмотр кода ассемблера I 'Я предполагаю, что @""
имеет преимущество в производительности, но думать, что это важно, на самом деле является случаем преждевременной оптимизации.
Просто используйте @""
, его преимущество в том, что оно короткое и ясное.