Внутри метода инициализации у меня есть следующий код
- (id)init {
self = [super init];
if (self) {
UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
tempButton.frame = CGRectMake(0,0,300,44);
// some custom code...
self.myButton = tempButton;
}
return self;
}
Где myButton
— сохраненная собственность. Я знаю, что для правил управления памятью этот метод равен другому:
- (id)init {
self = [super init];
if (self) {
UIButton *tempButton = [[UIButton alloc] initWithFrame:CGRectMake(0,0,300,44)];
// some custom code...
self.myButton = tempButton;
[tempButton release];
}
return self;
}
Но в этом случае мне нужно использовать первую «версию», потому что свойство buttonType
доступно только для чтения, и я не могу изменить его после инициализации кнопки.
Поскольку я обнаружил, что использую версию «без инициализации» в нескольких методах во всем моем приложении и для нескольких объектов (большинство из них NSString
), мой вопрос: не считая в этом случае присвоение свойству, которое сохраняет объект, когда объект tempButton
будет выпущен? Может быть, в конце оператора метода/если? Или первая «версия» приведет к повышенному использованию памяти, так как объект освобождается не сразу, а через определенное время?