【问题标题】:NSOperationQueue callback before an operation is started?操作开始前的 NSOperationQueue 回调?
【发布时间】:2013-01-14 02:59:05
【问题描述】:

有没有一种方法可以查明操作是否/何时将在 NSOperationQueue 上开始/执行? 我正在使用NSURLConnection'ssetDelegateQueue:,我需要知道它何时触发。

【问题讨论】:

  • 你能在你的 NSURLConnection 上设置一个委托吗?
  • 是的,但是我没有看到在建立连接之前调用的 NSURLConnection 上的委托方法。我发现最早是在收到回复时。

标签: objective-c nsurlconnection nsoperation


【解决方案1】:

在您的 NSOperation 子类中为 willStartBlock 添加一个复制属性。在 main 的开头 - 在任何其他操作之前 - 如果已设置,则调用此块。

这样,您可以在创建操作时以及在将其放入操作队列之前设置操作开始时要执行的操作。

您的具体问题中的问题是您没有创建在队列上创建的操作。您可以尝试继承 NSOperationQueue 并覆盖三个公共 addOperation* 方法。如果你很幸运,那么其中之一就是 NSURLConnection 用来将回调操作附加到你的队列的那个。

【讨论】:

  • 我没有 NSOperation 子类。
  • 阅读我所有的答案。子类 NSOperationQueue.
【解决方案2】:

我可以知道你到底想做什么。

我不确定您想要实现什么,因为您的问题并不清楚,但您可以这样做:

currentConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
if (self.operationQueue) {
    [currentConnection setDelegateQueue:self.operationQueue];
}        
[currentConnection start];

一旦调用 start 方法,NSURLConnection 就会被调用。 您还可以继承 NSOperation 并覆盖 start 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2014-04-25
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多