为什么我的NSOperation对象不能接收异步回调?

问题描述:

我的子类NSOperation来实现我的操作。让我们称之为MyOperation。为什么我的NSOperation对象不能接收异步回调?

在MyOperation的实现中,我重写了主函数,并在其中创建了一些异步网络东西,并将委托设置为self(操作对象)。但操作对象从未获取这些委托回调,为什么?在收到回调之前,我没有完成设置。

还是NSOperation不能做到这一点?

我发现如果我手动“启动”操作,它将工作。但是,如果我将它添加到操作队列中,操作将被执行,但无法获得这些回调。

如果你在这样的主要方法设置你的回调:

-(void)main{ 
    // setup 
    object.delegate = self 
} 

那么你的主要方法将继续执行,完整,走委托有机会完成回调之前。您需要重写NSOperation中的start方法并手动处理isFinished和isExecuting属性,或者您需要找出一种方法,让委托方法在不会消失的对象上调用。

请参阅NSOperation class reference了解有关覆盖正确方法和KVC通知以使其正常工作的完整详细信息。