NSString *aString = @"Hello";
Создает строку autoreleased
. То есть, если вы явно не retain
это, оно может исчезнуть после завершения вашего метода (а иногда это совершенно нормально). Но если вы хотите сохранить его после того времени, вам нужно сохранить его.
Если вы создадите свойство для этой строки, как это
@property (retain) NSString *aString;
А затем назначьте так:
self.aString = @"Hello";
Тогда вы правильно сохранили строку, и она останется.
С другой стороны, использование alloc, init
создаст для вас строку с счетом сохранения 1, и если вам не нужен этот метод после этого, вы должны release
ее.
**** Редактировать: @ «Hello» не является автоматически выпущенной строкой, как отмечали другие. Виноват. ****