2

在我的 iPhone 应用程序中,我有这样的代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"Instruction Controller";
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(menuButtonClicked)];   
}   


#pragma mark private methodes

-(void) menuButtonClicked{
    NSLog(@"menuButtonClicked");
}

但是当我点击这个按钮时,它会引发一个异常:“无法识别的选择器发送到实例”。我该如何解决这个问题?

更新

2013-05-23 12:21:33.182 CICDP[3091:11603]-[__NSCFString menuButtonClicked]:无法识别的选择器发送到实例 0x8128eb0 2013-05-23 12:21:33.188 CICDP[3091:11603] *由于未捕获而终止应用程序异常“NSInvalidArgumentException”,原因:“-[__NSCFString menuButtonClicked]:无法识别的选择器发送到实例 0x8128eb0”

4

3 回答 3

5

看起来您的控制器类(按钮操作的目标)在按钮触发之前被释放。该按钮可能由其超级视图保留。

在按钮显示的整个过程中,您需要做一些事情来使控制器类保持活动状态(其他一些实例需要对其进行强引用)。

于 2013-05-23T09:25:02.200 回答
0

我有同样的问题,但它不是参考问题。日志“Interface Builder 文件中的未知类 MyViewController。” 对我有很大帮助。

我已经用答案解决了这个问题:Xcode 6 Strange Bug: Unknown class in Interface Builder file

要解决此问题,请确保正确设置与您的视图关联的模块:

如果您看到 Module None,则存在问题

在此处输入图像描述

继续模块,只需点击输入即可查看:

在此处输入图像描述

于 2016-01-22T10:11:45.777 回答
-3

您需要在选择器中添加 : 并更改方法

- (void)viewDidLoad

{

    [super viewDidLoad];

    self.title = @"Instruction Controller";

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
        initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self 
        action:@selector(menuButtonClicked:)];   

}

-(void) menuButtonClicked:(id)sender {
    NSLog(@"menuButtonClicked");
}
于 2013-05-23T09:24:40.250 回答