我在这里执行此代码
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'
第一次抛出调用堆栈:
我如何能够捕获此错误并向用户显示响应,而不是应用程序崩溃?
答案 0 :(得分: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
上看到此示例