在某些设备上,由于以下错误,我的应用程序崩溃了: NSInvalidArgumentException: - [OS_dispatch_data notifyDelegateOnWillFinish]:无法识别的选择器发送到实例0x2082d7a0
我无法重现此行为。我通过乱七八糟的分析跟踪崩溃,一些用户似乎遇到了这个问题。
我试图谷歌这个错误没有成功。所以希望有人知道这意味着什么。
非常感谢!!
编辑: 我使用dispatch的代码中唯一的部分就是这个
- (void) callDelegateOnMainThread: (SEL) selector withArg: (id) arg error: (NSError*) err
{
dispatch_async(dispatch_get_main_queue(), ^(void)
{
[self callDelegate: selector withArg: arg error: err];
});
}
EDIT2: 这是callDelegate方法:
- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err
{
assert([NSThread isMainThread]);
if([delegate respondsToSelector: selector])
{
if(arg != NULL)
{
[delegate performSelector: selector withObject: arg withObject: err];
}
else
{
[delegate performSelector: selector withObject: err];
}
}
else
{
DebugLog(@"Missed Method");
}
}
这段代码有问题吗?请指教!非常感谢你!
答案 0 :(得分:0)
我认为你没有在你的班级中实现notifyDelegateOnWillFinish方法。
您应该在调用委托方法之前添加检查,例如。
if([delegate respondsToSelector:selector])
[self callDelegate: selector withArg: arg error: err];