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

时间:2011-08-18 02:48:04

标签: asynchronous delegates callback nsoperation

我将NSOperation子类化以实现我的操作。让我们称之为MyOperation。

在MyOperation的实现中,我覆盖了main函数,在其中我创建了一些异步网络的东西并将委托设置为self(操作对象)。但操作对象永远不会得到那些委托回调,为什么?在收到回调之前我没有完成设置。

或者NSOperation不能这样做吗?

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

1 个答案:

答案 0 :(得分:0)

如果您在主方法中设置回调,请执行以下操作:

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

然后你的main方法将继续执行,完成,并在委托有机会完成回调之前离开。您需要覆盖NSOperation中的start方法并手动处理isFinished和isExecuting属性,或者您需要找到一种方法来在不会消失的对象上调用委托方法。

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