Может ли кто-нибудь поделиться некоторыми знаниями о том, что является передовой практикой/соглашением о коде при использовании @property iVars в методах инициализации или назначенных инициализаторах?
пожалуйста, посмотрите мой пример:
@interface MyClass ()
@property(nonatomic,strong) nsstring *tempString;
@property(nonatomic,strong) NSMutableArray *arrItems;
@end
@implementation ViewController
- (id)init
{
if (self = [super init]) {
//Is this best practice / correct
_tempString = @"";
_arrItems = [[NSMutableArray alloc] initWithCapacity:0];
...
...
//Or this
self.tempString = @"";
self.arrItems = [[NSMutableArray alloc] initWithCapacity:0];
}
return self;
}
@end
Любые советы о том, почему следует использовать тот или иной?
Спасибо...
self.tempString = @"Some Value";
. Причина в том, что у вас может быть некоторая пользовательская логика в сеттере. Например, возможно, ваш установщик tempString хотел бы удалить тире из номера телефона. Если вы присвоите значение непосредственно ivar, вы обойдете эту логику. Идея состоит в том, чтобы использовать сеттер, если он у вас есть, если только вы не видите причины НЕ делать этого. Просто примечание: если вы назначаете непосредственно ivars, вам нужно будет самостоятельно управлять структурой сохранения/копирования/атома (сеттеры обрабатывают это, если не переопределить). - person Jeremy   schedule 05.10.2012