gpt4 book ai didi

objective-c - 将 NSOperation 依赖项添加到已在 NSOperationQueue 中的操作

转载 作者:行者123 更新时间:2023-12-01 19:16:27 25 4
gpt4 key购买 nike

我想使用 NSOperationQueue 实现一些后台网络请求.我有几个不同的请求将通过代码的不同部分添加到队列中,其中一个将比另一个更经常地运行。

我已经使用 GCD 实现了这个,所以我有代码块,因此我打算简单地使用 NSBlockOperation方法blockOperationWithBlock:^{...}并且不创建 NSOperation 的子类.

这个问题是我想在请求之间创建依赖关系。如果队列已经有 NSBlockOperation对于 requestA,我想在创建 NSBlockOperation 时为其添加依赖项请求 B.同时创建操作时这很简单,但我找不到一种简单的方法来确定队列中已经存在哪些操作。
NSOperationQueue有一个 operations属性,所以我可以自己检索操作列表,但是如何确定哪个操作是哪个?我没有看到可以使用的名称/描述属性。

我能想到的选项是:

  • 子类 NSOperation为每个请求类型创建自定义对象,然后对从 operations 检索到的对象使用自省(introspection)房产
  • 子类 NSBlockOperation并添加描述属性

  • 我是否错过了其他一些明显的方法来做到这一点?

    最佳答案

    添加一个实例变量,保存最新的 requestA手术。在 requestA 的末尾清除它堵塞。例如。

    _requestA = [NSBlockOperation blockOperationWithBlock:^{
    // Normal requestA code here.
    // ...

    // Assuming you create all requestA and requestB instances on the main thread...
    dispatch_async(dispatch_get_main_queue(), ^{ _requestA = nil; });
    }];

    那么当你创建一个 requestB ,你可以给它最新的 requestA作为依赖项,如果还有一个要使用的话。

    关于objective-c - 将 NSOperation 依赖项添加到已在 NSOperationQueue 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961858/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com