gpt4 book ai didi

ios - 我可以在没有队列的情况下在另一个 NSOperation 内部启动一个 NSOperation 吗?

转载 作者:行者123 更新时间:2023-12-02 04:05:27 26 4
gpt4 key购买 nike

我的应用程序获取当前设备位置,将其发布到我的服务器,并返回要在 TableView 中显示的字典。目前我正在使用 CLLocationManager 委托(delegate)方法和 AFJSONRequestOperation (AFNetworking 的通过 NSURLConnection-in-NSOperation 类检索数据)来完成这项工作,但此功能位于一个 View Controller 方法内,我希望能够重用此功能跨其他 View Controller 。

我计划创建自己的 NSOperation 子类,但首先我想知道在另一个 NSOperation 内部启动 NSOperations (AFJSONRequestOperation) 是否存在任何看不见的陷阱。这是否按预期工作,或者我应该找到一种方法来创建一个具有操作之间依赖关系的队列?

最佳答案

在 NSOperation 中调度 NSULRL 连接操作将会失败,除非您将其调度到主运行循环上。 AFJSONOperation(或 AFURLOperation 的任何子类)将会成功,因为在幕后,AFNetworking 操作是在它们自己的 NSOperationQueue 和自定义运行循环上调度的。

所以 - 是的。大胆试试吧。我使用 NSOperation 子类来隔离所有工作进程。它比 VC 或模型中间的平坦 GCD 干净得多。

警告 - 由于所有 AFNetworking 操作都是基于 block 的并且异步返回,因此您的 NSOperation 子类将需要并发。 Apple 在其文档中提供了如何构建此功能的详细说明 Concurrent NSOperation Subclasses

可选 - 您可以跳过构建并发 NSOperation 子类,并从 NSOperation 内同步触发网络操作,因为您已经脱离了主队列。

关于ios - 我可以在没有队列的情况下在另一个 NSOperation 内部启动一个 NSOperation 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453092/

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