我有点困惑是否NSRunLoop
是thread safe or not
。所以我需要澄清一下它是否是线程安全的,为什么?
任何帮助都是可观的。
我有点困惑是否NSRunLoop
是thread safe or not
。所以我需要澄清一下它是否是线程安全的,为什么?
任何帮助都是可观的。
NSRunLoop
在官方参考文档的开头有一个警告:
警告:NSRunLoop 类通常不被认为是线程安全的,它的方法只能在当前线程的上下文中调用。你永远不应该尝试调用在不同线程中运行的 NSRunLoop 对象的方法,因为这样做可能会导致意外结果。
NSRunLoop
不是thread safe
。请参阅Apple 的指南以获取更多参考。
不它不是。
警告:NSRunLoop 类通常不被认为是线程安全的,它的方法只能在当前线程的上下文中调用。你永远不应该尝试调用在不同线程中运行的 NSRunLoop 对象的方法,因为这样做可能会导致意外结果。
它不仅不是线程安全的,而且明确地是线程特定的。在 s之间传递消息的每个线程都NSObject
必须包含自己的NSRunLoop
. 访问另一个线程的 runloop 可能会弄乱跟踪的循环,如-autorelease
d 对象、定时事件(如NSTimer
s)以及由-runUntilDate:
. 此外,我假设NSRunLoop
将使用特定于线程的数据来存储一些信息。这意味着您可能会导致线程特定数据和对象存储数据之间的数据不匹配。