Я часто вижу что-то вроде следующего:
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];
self.navigationItem.rightBarButtonItem = anotherButton;
[anotherButton release];
в частности, когда используется локальная переменная, в данном случае «anotherButton», а затем освобождается. Является ли это точно таким же, как его автоматическое освобождение, когда оно выделено, а затем проверка того, что оно используется до завершения метода? то есть:
UIBarButtonItem *anotherButton = [[[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)] autorelease];
self.navigationItem.rightBarButtonItem = anotherButton;
Я спрашиваю, потому что я вижу, что это делается первым способом огромное количество времени, но мне кажется менее подверженным ошибкам (для меня) просто автоматически выпускать его напрямую. Является ли это просто вопросом личного стиля или существуют различия между этими двумя подходами, за исключением того, что один методично выпускает объект после того, как с ним сделано все, а другой заботится о том, чтобы объявить об освобождении объекта в самом начале, чтобы никто случайно не забудьте, оба имеют достоинства.