NSString stringWithString VS @ "string" - PullRequest
       2

NSString stringWithString VS @ "string"

4 голосов
/ 06 марта 2012

Мне было просто любопытно, есть ли разница между следующими двумя кодами?

NSString * aString = [NSString stringWithString: @ "a string"];

NSString * aString = @"строка";

Интересно, что именно происходит, когда вы делаете последний путь.

1 Ответ

3 голосов
/ 06 марта 2012

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

Несмотря на то, что stringWithString предполагает автоматическое освобождение, литеральная строка никогда не будет выпущена.

См. Мой связанный пост здесь:

Разница между литералами NSString

Из документов Apple @ https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html

Такой объект создается во время компиляции и существует во время выполнения вашей программы.Компилятор делает такие объектные константы уникальными для каждого модуля, и они никогда не освобождаются, хотя вы можете сохранить и освободить их, как и любой другой объект.

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