UIBarButtonItem приводит к сбою приложения для iPhone - PullRequest
1 голос
/ 24 ноября 2011

Я работаю над проектом и пытаюсь сделать все, что в моих силах, программно.

Мне нужно добавить UIBarButtonItem в панель навигации NavigationController, созданную в делегате приложения.

WPViewController *mainVC = [[WPViewController alloc] initWithNibName:@"WPViewController_iPhone" bundle:nil];
UINavigationController *navCon = [[UINavigationController alloc] init];        
[navCon pushViewController:mainVC animated:NO];
[self.window addSubview:navCon.view];      

Затем в файле реализации объявленного здесь WPViewController я создаю и добавляю barbuttonitem в качестве элемента навигации VC:

UIBarButtonItem *rBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(test)];
self.navigationItem.rightBarButtonItem = rBarButtonItem;

Существует метод с именем test, объявленный передэто просто журнал «тест», но когда я нажимаю на кнопку, приложение вылетает.

Пожалуйста, помогите мне, эта ошибка сводит меня с ума.

Примечания:

  • Я использую ARC в своем проекте
  • Никогда ранее подобной ошибки не было

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

«Сообщение отправлено на освобожденный экземпляр» в ARC означает, что компилятор пометил и отпустил ваш элемент до того, как ваше сообщение могло быть отправлено.

Установите NSZombieEnabled, MallocStackLogging и guard malloc в отладчике.Затем, когда ваше приложение падает, введите в консоли:

(gdb) info malloc-history // адрес вызывающего сбой объекта, т.е. 0x543216 //

0 голосов
/ 23 декабря 2011

У меня также была эта проблема при использовании addSubview, но создание свойства с (nonatomic, strong) strong решило ее для меня.

0 голосов
/ 24 ноября 2011

Кнопка пытается передать себя в качестве аргумента методу теста.Я предполагаю, что ваша подпись этого метода не содержит аргумента, потому что в вашем селекторе нет двоеточия (оно должно быть @selector(test:)).И реализация метода должна выглядеть так:

- (void) test:(id)sender
...