iOS:由于[OS_dispatch_data notifyDelegateOnWillFinish]应用程序崩溃?

时间:2012-11-04 09:26:05

标签: iphone ios ipad crash

在某些设备上,由于以下错误,我的应用程序崩溃了: 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");
    }
}

这段代码有问题吗?请指教!非常感谢你!

1 个答案:

答案 0 :(得分:0)

我认为你没有在你的班级中实现notifyDelegateOnWillFinish方法。

您应该在调用委托方法之前添加检查,例如。

if([delegate respondsToSelector:selector])
    [self callDelegate: selector withArg: arg error: err];