Если вы установите атрибут с автоматическим выпуском, объект в атрибуте может умереть в любое время за пределами непосредственной области видимости. Удобные методы, то есть те, которые начинаются с типа: строка, массив, словарь и т. Д., Возвращают автоматически выпущенные объекты. Вы используете автоматически выпущенные объекты только тогда, когда вам все равно, выживут ли они за пределами существующей области.
В этом случае вам действительно нужно использовать средства доступа, как синтезированные, так и пользовательские, для автоматического управления вашим хранением.
Если вы делаете:
@property(nonatomic, retain) NSString *_testString; // .h
@synthesize _testString; //.m
тогда в коде используйте справочную форму:
self._testString = [NSString stringWithString:@"hello"];
... тогда единственное место, которое вы должны освободить _testString
, находится в dealloc. Компилятор создаст синтезированные средства доступа, которые будут автоматически управлять памятью свойств для вас.
Кстати, вы не должны использовать подчеркивания для имен. Apple оставляет за собой имена подчеркивания, чтобы вы могли столкнуться с именами.