【问题标题】:For iOS NSOperationQueue, when will the queue remove the operation block?对于iOS NSOperationQueue,队列什么时候会移除操作块?
【发布时间】:2014-09-02 07:06:00
【问题描述】:

对于iOS NSOperationQueue,队列什么时候会移除操作块?对于我的项目,我使用 MKNetworkKit 来管理网络请求操作,您知道请求/响应是异步操作,一旦请求发出,队列会删除操作吗?或者它会等待响应然后将其从队列中删除?有知道的朋友一起分享讨论,先谢谢了。

【问题讨论】:

  • 取决于NSOperation的类型。它是内置类型之一,还是自定义类型?如果是内置的,是哪一个?
  • isFinished 为真时会被移除。
  • 谢谢大家,和KVO有关,观察isFinished var。

标签: ios nsoperationqueue


【解决方案1】:

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

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

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

在你的 isFinished 中:

- (BOOL)isFinished {
return finished;

}

【讨论】:

  • 太好了,谢谢。这是控制队列和相关操作的好方法。
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多