Я немного озадачен тем, что память указателей является новой для программирования. Поэтому я добавляю UIBarButtonItem на основе того, когда UITabBarController выбран следующим образом:
NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy];
if (_sortButton == nil) {
_sortButton = [[UIBarButtonItem alloc] initWithTitle:@"Sort" style:UIBarButtonItemStyleBordered target:self action:@selector(sortButtonPressed:)];
[barItems insertObject:_sortButton atIndex:0];
[self.MainToolbar setItems:barItems];
[_sortButton release];
}
Я попытался удалить UIBarButton, проверив, равен ли _sortButton ноль, как это:
if (_sortButton != nil) {
// self.SortButton = nil; // I NEEDED THIS
NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy];
[barItems removeObjectAtIndex:0];
[self.MainToolbar setItems:barItems];
}
Это не сработало, пока я не добавил закомментированную строку self.SortButton = nil. Кто-нибудь может это объяснить? Я думал, что если я удалю _sortButton из массива, он будет неинициализирован, но я думаю, что это неправильно. Кажется, он все еще имеет ссылку в памяти, если вы не установите его на ноль. Это правильно? Спасибо.