【问题标题】:Bad access exception using xcode 4.2使用 xcode 4.2 的错误访问异常
【发布时间】:2011-11-22 12:11:46
【问题描述】:

触摸按钮调用按钮操作时,我收到“EXC_BAD_ACCESS”。

#import "TestViewController.h"

@implementation TestViewController

- (id)init
{
    self = [super init];
    if (self) 
    {
       self.title=@"IOS5 and Xoced 4.2";

        UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(9,6,100,100)];
        button.backgroundColor=[UIColor greenColor];
        [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview: button];


    }
    return self;
}
-(void)viewWillAppear:(BOOL)animated
{
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithTitle:@"Add" 
                                                                 style:UIBarButtonItemStyleBordered 
                                                                target:self 
                                                                action:@selector(addAction)];
    self.navigationItem.rightBarButtonItem = addButton;

}
-(void)buttonAction
{
    printf("Hi i am in buttonAction method");

}

-(void)addAction
{
    printf("Hi i am in addAction method");

}

我在这个项目中使用了 ARC 启用。 当我触摸 UIBarButtonItem 或 UIButton 时出现以下错误。

TestXcode4[2470:207] -[__NSCFString addAction]:无法识别的选择器 发送到实例 0x6827b00

请帮帮我。

【问题讨论】:

  • 在你的 .h 文件中声明 UIBarButtonItem *addButton 然后再试一次
  • 您的视图控制器可能正在发布。你是如何显示这个视图控制器的?
  • @Maulik:addSubview:rightButtonItem: 在调用按钮时不会拥有它们的所有权吗?
  • 只需尝试将 -(void)buttonAction 替换为 -(IBAction) buttonAction :(id) sender,并在按钮操作中添加':'。
  • 请包含您创建和呈现此视图控制器的代码。

标签: iphone objective-c ios5 xcode4.2 automatic-ref-counting


【解决方案1】:

如果您将此视图控制器添加到窗口,那么您不会在 addsubview 调用后释放该控制器。因为 window 不会保留那个视图控制器。

【讨论】:

    【解决方案2】:

    我只是在项目设置中禁用了 ARC。然后它工作正常....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2011-11-15
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多