UIBarButtonItem使我的iPhone应用程序崩溃

时间:2011-11-23 20:33:11

标签: ios memory crash uibarbuttonitem automatic-ref-counting

我正在开展一个项目,我正在尝试以编程方式做到最多。

我要将UIBarButtonItem添加到在App Delegate中创建的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的方法,只需记录“test”,但当我点击该按钮时,应用程序崩溃。

请帮助我,这个错误让我发疯。

注意:

  • 我在项目中使用ARC
  • 之前没有类似的错误

3 个答案:

答案 0 :(得分:0)

ARC中的“发送到解除分配的实例的消息”表示编译器已经标记并释放了您的项目,然后才能发送消息。

在调试器中设置NSZombieEnabled,MallocStackLogging和guard malloc。然后,当您的应用程序崩溃时,在控制台中输入:

(gdb)info malloc-history //崩溃对象的地址,即0x543216 //

答案 1 :(得分:0)

使用addSubview时我也遇到了这个问题,但是创建一个(nonatomic, strong)强的属性为我解决了这个问题。

答案 2 :(得分:-1)

Button尝试将自身作为参数传递给测试方法。我猜你的方法的签名不包括参数,因为你的选择器中没有冒号(它应该是@selector(test:))。方法实现应如下所示:

- (void) test:(id)sender