Вы, вероятно, хотите изменить этот метод на что-то вроде этого.
- (UIBarButtonItem *)myBackButton {
if (!myBackButton) {
myBackButton = [[[UIBarButtonItem alloc] initWithTitle:self.title style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
}
return myBackButton;
}
тогда, где-то еще (вероятно, в вашем viewDidLoad / появиться) вызов
self.navigationItem.backBarButtonItem= self.myBackButton;
Я изменил сохранение на автоматическое освобождение, так как любой метод с init, copy или new увеличит счет сохранения. если он не содержит копию init или новый, он должен возвращать автоматически выпущенный экземпляр.
также, когда вы устанавливаете его в качестве элемента backbuttonItem, он все равно сохраняется этим.
Стоит отметить, что при доступе к свойствам через точечную нотацию вы фактически проходите через сеттеры и геттеры. т.е.
self.myBackButton.title =@"title";
совпадает с
[[self myBackButton] setTitle:@"title"];
Вы почти всегда должны проходить через сеттеры и геттеры, а не обращаться к ним как к локальной переменной. т.е. использовать
self.myBackButton вместо myBackButton, так как это позволит вам выполнить любые необходимые настройки на пути, а также знать, что если какой-либо код обращается к нему, он будет проходить через этот метод, а не изменять переменную напрямую.