0

我在这里执行这段代码

self.cloudSightQuery = [[CloudSightQuery alloc] initWithImage:imageData
                                              atLocation:CGPointZero
                                            withDelegate:self
                                             atPlacemark:nil
                                            withDeviceId:@""];
self.cloudSightQuery.queryDelegate = self;
[self.cloudSightQuery start];

但是有时它会因以下原因而崩溃

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[ImageViewController cloudSightQueryDidFail:withError:]:无法识别的选择器发送到实例 0x100514c40”

首先抛出调用堆栈:

我如何能够捕获此错误并向用户显示响应而不是应用程序崩溃?

4

1 回答 1

2

你看过回溯吗?您可以使用调试器(在 XCode 中)显示回溯。

错误本身表明[ImageViewController cloudSightQueryDidFail:withError:]向该实例 (0x100514c40) 发送了无效的方法调用。考虑到我们正在处理委托模式,似乎该方法从未在您的父类中定义过,并且它是协议所要求的。您需要确保首先定义该方法,然后它应该可以工作。

TL;DR - 您需要将此方法添加到您的委托(自我):

- (void)cloudSightQueryDidFail:(CloudSightQuery *)query withError:(NSError *)error
{
    // TODO: Fill in your logic here
    NSLog(@"query: %@, experienced an error: %@", query, error);
}

您可以在以下位置查看此示例:https ://github.com/cloudsight/cloudsight-objc/tree/master/Example-objc

于 2017-03-31T13:52:39.893 回答