【问题标题】:What is the difference between NSTask and NSOperation?NSTask 和 NSOperation 有什么区别?
【发布时间】:2015-05-29 05:43:28
【问题描述】:

我是 ios 开发的新手,一直在阅读苹果网站上的文档,在那里我偶然发现了 NSTaskNSOperation。我无法根据他们实际所做的来区分两者之间的区别。有人可以列出它们之间的区别以及何时适合使用它们吗?

编辑:我不明白它们之间有何不同。 文档说NSTask 对象用于运行子进程,并且只能运行一次。 他们还说NSOperation 封装了一个只能运行一次的任务。

他们似乎做着完全相同的事情。这就是为什么我想知道使用它们的优缺点。

【问题讨论】:

  • 看到这个answer
  • 请更具体地说明您了解和不了解的内容。它们之间基本上没有任何关系。
  • 编辑问题@JoshCaswell
  • @VivekMolkar,所以据我了解,NSTasks 更专业,在 iPhone 上不可用,并且在 NSTask 崩溃时不会导致程序崩溃,而且它们通常在不同的线程。另一方面,NSOperation 更适用于一般的例行任务,它们可以使程序崩溃,它们可以但不必在不同的线程上。这是正确的理解吗?
  • 如果有人反对,请给出理由。这是一个合法的问题,而不是与网站上存在的任何其他内容的重复。如果问题不清楚,请指出,我会进行编辑以澄清任何细节。

标签: ios objective-c


【解决方案1】:

如您所见,NSTask 用于运行新的子进程。进程是具有独立内存空间的新实体。一个进程可以创建多个线程,这些线程将在其内存空间中运行。 NSTask 在 iOS 中不可用,因为一个应用不能有多个进程(即应用​​本身)。

NSOperation 的简化解释是,它就像创建一个新线程。 我认为让您感到困惑的是NSOperation 文档中“任务”一词的使用。他们不是在谈论NSTask,而是在谈论操作正在执行的代码(即您的“任务”)。

尝试比较两者或发现差异没有多大意义,因为它们并不真正相关。更不用说你不能真正在 iOS 中使用 NSTask 或进程概念......

【讨论】:

  • 你说得对,在 NSOperation 文档中使用“任务”这个词真的让我很困惑。谢谢您的帮助!但是该死的,堆栈溢出有时会很严重。
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2011-12-12
  • 2010-09-16
  • 2012-03-14
  • 2012-02-06
相关资源
最近更新 更多