Мне было просто любопытно, есть ли разница между следующими двумя кодами?
NSString * aString = [NSString stringWithString: @ "a string"];
NSString * aString = @"строка";
Интересно, что именно происходит, когда вы делаете последний путь.
Оба указывают на буквальную строку, созданную во время компиляции.
Несмотря на то, что stringWithString предполагает автоматическое освобождение, литеральная строка никогда не будет выпущена.
См. Мой связанный пост здесь:
Разница между литералами NSString
Из документов Apple @ https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html
Такой объект создается во время компиляции и существует во время выполнения вашей программы.Компилятор делает такие объектные константы уникальными для каждого модуля, и они никогда не освобождаются, хотя вы можете сохранить и освободить их, как и любой другой объект.