【问题标题】:Which one to use NSOperation main() and start() methods哪一个使用 NSOperation main() 和 start() 方法
【发布时间】:2016-04-17 17:10:52
【问题描述】:

由 Apple 文档提供

主要 -

对于非并发操作,您通常只覆盖一种方法:

主要

开始-

当您将操作添加到操作队列时,队列会忽略 异步属性的值并始终调用 start 方法 从一个单独的线程。因此,如果您始终通过以下方式运行操作 将它们添加到操作队列中,没有理由制作它们 异步。

如果我必须执行 Alamofire 的代码,它已经使用了操作队列并且是异步的。我应该在哪里编写代码(Main 或 Start)来调用 Alamofire 请求?

【问题讨论】:

  • 您是否阅读过NSOperation 文档中对这两个函数的详细描述?如果是这样,您不确定的具体是什么?
  • 我根据我的需要提出了这个问题。谢谢

标签: cocoa cocoa-touch nsoperation


【解决方案1】:

也许我没有抓住你的答案,但是,如果你需要在你的自定义操作中包装 Alamofire,你必须创建一个异步的NSOperation

你可以在this Github repo找到一个很好的例子。

重点是:

  • 覆盖asynchronous 属性返回true
  • 覆盖start 方法
  • 控制isExecutingisFinished 属性以更改操作状态

【讨论】:

    【解决方案2】:

    您可以将MainStart 都实现为一行函数,每个函数都调用MyRealProcessingFunction 来完成您的实际工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      相关资源
      最近更新 更多