最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】iOS程序出错:[AddSightingViewController handleImageTap]: unrecognized selector sent to instance 0x6d97d20

iOS crifan 2521浏览 0评论

【问题】

在折腾

【未解决】关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件

的过程中,写了代码:

- (void)viewDidLoad
{
    self.imgPickerController = [[UIImagePickerController alloc] init];
    
    UITapGestureRecognizer *imgTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleImageTap)];
    imgTap.numberOfTapsRequired = 1;
    imgTap.numberOfTouchesRequired = 1;
    
    [self.birdImageView addGestureRecognizer:imgTap];
    
......
}    

//handle the tap to image
-(void)handleImageTap:(UITapGestureRecognizer *)sender{
    
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        NSArray *availableMediaTypeArr = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
        
        self.imgPickerController.mediaTypes = availableMediaTypeArr;
        //[self presentViewController:self.imgPickerController animated:YES completion:NULL];
    }
}

但是结果运行时出错:

2012-09-11 09:31:08.542 BirdWatching[467:11603] -[AddSightingViewController handleImageTap]: unrecognized selector sent to instance 0x6d97d20

(lldb)

unrecognized selector sent to instance 0x6d97d20

【解决过程】

1.后来找到出错的位置是:

souce error location

对应的,说是找不到handleImageTap这个selector。

2.此处不清楚什么是selector的。

但是后来找到了所参考代码的页面:

click any UIImage and open an UIImageView in objective-c

然后注意到,问题回答处的示例代码中,函数后面是带冒号的,

[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];

但是问题中的示例代码,函数直接写成了不带冒号的:

tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(yourSelector)];

导致我参考其代码,就没有写冒号。

然后又注意到,别的地方也是函数带冒号的:

IOS开发之触摸与点击事件:UITapGestureRecognizer与UIPanGestureRecognizer应用

3.先去添加上冒号试试。

然后就解决问题了,函数可以正常执行到对应位置了:

函数可以正常执行了,可以执行到断点了

 

【总结】

之前出现“unrecognized selector sent to instance ”的错误:

【已解决】UITableViewController setDataController:unrecognized selector sent to instance

当时的原因是类不匹配,导致没有对应的方法,报此错误的。

此处出现此错误,却不由于没太注意,(刚开始也不懂),参考别人代码时,写了个函数,但是没有添加上后面耳朵冒号,导致此函数是非法的方法,所以找不到对应的方法。

解决办法就是,添加上对应的冒号即可。

转载请注明:在路上 » 【已解决】iOS程序出错:[AddSightingViewController handleImageTap]: unrecognized selector sent to instance 0x6d97d20

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.162 seconds, using 22.15MB memory