2014-09-02 60 views
0

对于iOS的NSOperationQueue,队列何时删除操作块?对于我的项目,我使用MKNetworkKit来管理网络请求操作,因为您知道请求/响应是异步操作,请求发出后队列会删除操作吗?或者它会等待响应,然后将其从队列中删除?任何人都知道请分享和共同讨论,谢谢。对于iOS NSOperationQueue,队列何时会删除操作块?

+0

这取决于“NSOperation”类型。它是内置类型之一还是自定义的?如果内置,哪一个? – 2014-09-02 07:14:01

+0

当isFinished为真时,它将被删除。 – quellish 2014-09-02 07:41:33

+0

谢谢你们,它与KVO有关,观察是已完成的变种。 – jianhua 2014-09-02 10:39:57

回答

0

操作块应该从NSOperation继承,NSOperation是一个抽象类。 有一些方法可以从操作队列中删除块。

1)你实现了 - (void)main方法,当它完成时它将被从队列中移除。 2)你也可以实现isFinished方法来返回一个实例var,你可以在完成 - (void)main之前处理完成你的块。为此,您还应该更改志愿值,所以操作队列知道何时调用isFnished,就像这样:

[self willChangeValueForKey:@"isFinished"]; 
    finished = YES; 
    [self didChangeValueForKey:@"isFinished"]; 

而在你isFinished:

- (BOOL)isFinished { 
return finished; 

}

+0

太好了,谢谢。这是控制队列和相关操作的好方法。 – jianhua 2014-09-02 10:42:55