iPhone Dev - создание NSString - PullRequest
       8

iPhone Dev - создание NSString

0 голосов
/ 31 июля 2009

Я действительно запутался с NSStrings. Например, когда я должен сделать

NSString *aString = @"Hello";

из должно быть:

NSString *aString = [[NSString alloc] initWithString:@"Hello"];

Но тогда все по-другому, когда вы присваиваете значение свойству NSString, не так ли? Может кто-нибудь прояснить это для меня?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 31 июля 2009

В общем, вы должны сделать первое, но они в основном одинаковы. Вы можете обрабатывать константы NSString как обычные строковые объекты NSString, например:

[@"Hello" length]

вернет 5. Вы можете назначить их свойствам, все просто работает. Единственное, что вы можете заметить, это то, что с постоянными NSStrings вам не нужно беспокоиться о сохранении / освобождении. Это потому, что они фактически отображаются в разделе данных только для чтения приложений и не имеют выделенной памяти. Сохранять и отпускать звонки против них по-прежнему работают, они просто становятся noops.

0 голосов
/ 31 июля 2009
NSString *aString = @"Hello";

Создает строку autoreleased. То есть, если вы явно не retain это, оно может исчезнуть после завершения вашего метода (а иногда это совершенно нормально). Но если вы хотите сохранить его после того времени, вам нужно сохранить его.

Если вы создадите свойство для этой строки, как это

@property (retain) NSString *aString;

А затем назначьте так:

self.aString = @"Hello";

Тогда вы правильно сохранили строку, и она останется.

С другой стороны, использование alloc, init создаст для вас строку с счетом сохранения 1, и если вам не нужен этот метод после этого, вы должны release ее.

**** Редактировать: @ «Hello» не является автоматически выпущенной строкой, как отмечали другие. Виноват. ****

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