【发布时间】:2025-12-27 23:10:10
【问题描述】:
我想使用NSOperationQueue 实现一些后台网络请求。我有几个不同的请求将通过代码的不同部分添加到队列中,其中一个将比另一个更经常地运行。
我已经使用 GCD 实现了这个,所以我有代码块,因此我打算简单地使用 NSBlockOperation 方法 blockOperationWithBlock:^{...} 而不是创建 NSOperation 的子类。
这个问题是我想在请求之间创建依赖关系。如果队列已经有一个用于requestA 的NSBlockOperation,那么我想在为requestB 创建NSBlockOperation 时为其添加一个依赖项。同时创建操作时这很简单,但我找不到一种简单的方法来确定队列中已经存在哪些操作。
NSOperationQueue 有一个operations 属性,所以我可以自己检索操作列表,但是我如何确定哪个操作是哪个?我没有看到可以使用的名称/描述属性。
我能想到的选项是:
- 子类
NSOperation为每种请求类型创建自定义对象,然后对从operations属性检索到的对象使用自省 - 子类
NSBlockOperation并添加描述属性
我是否错过了其他一些明显的方法来做到这一点?
【问题讨论】:
-
你不能让你的
NSBlockOperation对象以一种你可以知道哪个是哪个的方式放置吗?
标签: objective-c ios multithreading nsoperation nsoperationqueue