【问题标题】:Raise an exception on another thread in iOS/Objective-C?在 iOS/Objective-C 的另一个线程上引发异常?
【发布时间】:2011-08-19 00:23:25
【问题描述】:

有没有办法在 iOS/Objective-C 的另一个线程上引发异常?

我想要做的是创建类似于 Java 的 Thread.interrupt() 和 InterruptedException 的东西(参见Java API)?当有人调用线程的中断方法时,会在线程上引发此异常,从而允许另一个线程发出提议的终止信号。

【问题讨论】:

  • 我不是 Objective-C 开发人员,但在我看来,您需要将思维从 Java 模式(如异常)转移到 Objective-C 中的适当模式/结构。也许是消息传递?
  • +1 马特,异常在 Objective-C 中是 exceptional 并且仅被 Apple 自己的框架用于指示程序员错误,而不是用于常规程序流程。
  • 里面有一个用例。对 Java 的引用只是为了便于解释。请暂时容忍我:-)
  • @MДΓΓБДLL 异常是 Objective-C 中的适当构造。

标签: objective-c multithreading exception


【解决方案1】:

-[NSThread cancel] 是您要查找的内容吗?它不会引发异常,但它允许另一个线程发出提议的终止信号。

【讨论】:

  • 这不是完整的解决方案。目标是在“被中断”线程上引发异常,而被中断线程不必合作。
  • 据我所知,异常只能在 Objective-C 的当前线程中引发。您可以尝试使用 pthread 函数立即终止线程,但这也可能不是您想要的。
  • @TomDalling 异常可以在 Objective-c 的任何线程中引发。
  • @Raffi 是的,显然,但这不是问题所要求的。请仔细阅读。
  • @TomDalling "据我所知,异常只能在 Objective-C 的当前线程中引发。"
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多