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

Asynchronous 为什么我的NSOperation对象不能接收异步回调?,asynchronous,delegates,callback,nsoperation,Asynchronous,Delegates,Callback,Nsoperation,我将NSOperation子类化以实现我的操作。我们称之为MyOperation 在MyOperation的实现中,我重写了main函数,并在其中创建了一些异步网络内容,并将委托设置为操作对象的self。但是操作对象从未得到这些委托回调,为什么?在收到回调之前,我没有设置“完成” 还是说国家安全局不能这么做 我发现如果我手动启动该操作,它将工作。但是,如果我将其添加到操作队列中,则会执行该操作,但无法获取这些回调。如果您在main方法中设置回调,如下所示: -(void)main{ //

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

在MyOperation的实现中,我重写了main函数,并在其中创建了一些异步网络内容,并将委托设置为操作对象的self。但是操作对象从未得到这些委托回调,为什么?在收到回调之前,我没有设置“完成”

还是说国家安全局不能这么做


我发现如果我手动启动该操作,它将工作。但是,如果我将其添加到操作队列中,则会执行该操作,但无法获取这些回调。

如果您在main方法中设置回调,如下所示:

-(void)main{
    // setup
    object.delegate = self
}
然后,在委托有机会完成回调之前,主方法将继续执行、完成并离开。您要么需要重写NSOperation中的start方法并手动处理isFinished和isExecuting属性,要么需要找到一种方法让委托方法在一个不会消失的对象上被调用

有关重写正确方法和KVC通知以使其工作的完整详细信息,请参阅