我将NSOperation子类化以实现我的操作。让我们称之为MyOperation。
在MyOperation的实现中,我覆盖了main函数,在其中我创建了一些异步网络的东西并将委托设置为self(操作对象)。但操作对象永远不会得到那些委托回调,为什么?在收到回调之前我没有完成设置。
或者NSOperation不能这样做吗?
我发现如果我手动“启动”操作,它将起作用。但是如果我将它添加到操作队列中,操作就会被执行,但是无法获得那些回调。
答案 0 :(得分:0)
如果您在主方法中设置回调,请执行以下操作:
-(void)main{
// setup
object.delegate = self
}
然后你的main方法将继续执行,完成,并在委托有机会完成回调之前离开。您需要覆盖NSOperation中的start方法并手动处理isFinished和isExecuting属性,或者您需要找到一种方法来在不会消失的对象上调用委托方法。
有关覆盖正确方法和KVC通知的详细信息,请参阅NSOperation class reference以使其正常工作。