Вам больше не нужно определять переменные экземпляра для свойств - @synthesize
делает это за вас.
Что касается вашего другого вопроса - вы можете сделать это в любом случае, но не забудьте отпуститьэто в вашем -dealloc
.Мне нравится (nonatomic, retain)
, потому что он очень понятен и прост в использовании / понимании.Все, что вы делаете, это назначаете, и он делает все остальное:
self.myViewController = [[[ViewController alloc] init] autorelease];
В вашем -dealloc
:
self.myViewController = nil;
В случае ручного освобождения вы можете забыть о свойствах вВсе и только используйте переменные экземпляра, как это:
@interface MyClass: NSObject
{
ViewController* _myViewController;
}
@end
В вашей реализации:
_myViewController = [[ViewController alloc] init];
В вашей -dealloc
:
[_myViewController release];
_myViewController = nil;
Обратите внимание, что последнийназначение nil
может быть ненужным, но у меня было слишком много трудно отслеживаемых ошибок с этим (и именно поэтому я люблю сохраняемые свойства - все, что вам нужно сделать, это установить их в ноль).
Я стараюсь всегда сохранять сохраняемые свойства, так как это спасает меня от мозговых циклов, и меня не волнует наносекунда, которую я мог бы сэкономить для процессора.