0

我有点困惑是否NSRunLoopthread safe or not。所以我需要澄清一下它是否是线程安全的,为什么?

任何帮助都是可观的。

4

4 回答 4

6

NSRunLoop 在官方参考文档的开头有一个警告:

警告:NSRunLoop 类通常不被认为是线程安全的,它的方法只能在当前线程的上下文中调用。你永远不应该尝试调用在不同线程中运行的 NSRunLoop 对象的方法,因为这样做可能会导致意外结果。

于 2013-05-27T10:33:39.130 回答
1

NSRunLoop不是thread safe。请参阅Apple 的指南以获取更多参考。

于 2013-05-27T10:34:09.630 回答
0

不它不是。

NSRunLoop Reference阅读文档

警告:NSRunLoop 类通常不被认为是线程安全的,它的方法只能在当前线程的上下文中调用。你永远不应该尝试调用在不同线程中运行的 NSRunLoop 对象的方法,因为这样做可能会导致意外结果。

还要检查SOF 上的 NSRunLoop 答案

于 2013-05-27T10:37:13.723 回答
0

它不仅不是线程安全的,而且明确地是线程特定的。在 s之间传递消息的每个线程都NSObject必须包含自己的NSRunLoop. 访问另一个线程的 runloop 可能会弄乱跟踪的循环,如-autoreleased 对象、定时事件(如NSTimers)以及由-runUntilDate:. 此外,我假设NSRunLoop将使用特定于线程的数据来存储一些信息。这意味着您可能会导致线程特定数据和对象存储数据之间的数据不匹配。

于 2013-05-27T10:56:54.907 回答