2014-09-02 61 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