'NSInvalidArgumentException',原因:' - [UIView isAnimating]:无法识别的选择器发送到实例

时间:2013-08-25 22:25:47

标签: ios

新手到xcode和objective-c。所以请原谅我的新手错误,但我有这个错误“'NSInvalidArgumentException',原因:' - [UIView isAnimating]:无法识别的选择器发送到实例”现在已经超过一天了,并且已经做了很多搜索而没有优先权。清理/构建应用程序时没有错误,但是当我单击按钮加载“UIIMagePickerController”时,应用程序终止并抛出错误。请帮忙。 THX

- (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType
{
    if (self.imageView.isAnimating)
    {
        [self.imageView stopAnimating];
    }

    if (self.capturedImages.count > 0)
    {
        [self.capturedImages removeAllObjects];
    }

    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
    imagePickerController.sourceType = sourceType;
    imagePickerController.delegate = self;

    if (sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        imagePickerController.showsCameraControls = NO;

        [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
        self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
        imagePickerController.cameraOverlayView = self.overlayView;
        self.overlayView = nil;
    }

    self.imagePickerController = imagePickerController;
   [self presentViewController:self.imagePickerController animated:YES completion:nil];

}

3 个答案:

答案 0 :(得分:1)

您的代码self.imageView.isAnimating正在被编译器变为[类似]:

[[self imageView] isAnimating]

根据错误消息,[self imageView]正在返回UIView个对象。 <{1}}类没有方法isAnimating,所以你得到一个例外。

找出UIView的设置位置,也许它在那里做错了什么?另外,你有ARC打开吗?它可能是一个内存管理错误。

答案 1 :(得分:0)

尝试更改行:

if (self.imageView.isAnimating)

if ([self.imageView isAnimating])

确保self.imageView确实是UIImageView

答案 2 :(得分:0)

该错误消息表示您尝试向未实现该消息的对象发送消息(大致等同于以Java,C ++或大多数其他语言调用函数)。这使得Objective C与许多其他流行语言不同。我建议给this article一个读数,特别是那个说

的部分
  

系统在运行时确定程序执行时,给定对象是否响应特定消息,如果是,则执行哪种方法。

另外,正如其他人所指出的那样,错误消息显示您的imageView对象是UIView而不是UIImageView。弄清楚为什么会解决你的问题。