Обычно, когда я создаю объект и назначаю его переменной экземпляра, я выделяю временный объект, вызываю установщик iVar, чтобы сохранить объект, а затем освобождаю временный объект.Однако сегодня утром я смотрел на init и заметил, что если я просто назначу iVar напрямую, он будет сохранен в alloc, а также будет освобожден правильно, когда вызывается либо метод setter, либо выполняется dealloc.Мне просто любопытно, правильно ли я это понимаю?
@property(nonatomic, retain) CLLocationManager *locationManager;
.
@synthesize locationManager;
// VERSION 001
- (id)init {
self = [super init];
if(self) {
CLLocationManager *tempManager = [[CLLocationManager alloc] init];
[self setLocationManager:tempManager];
[tempManager release];
}
return self;
}
// VERSION 002
- (id)init {
self = [super init];
if(self) {
locationManager = [[CLLocationManager alloc] init];
}
return self;
}
- (void)dealloc {
[locationManager release];
[super dealloc];
}