我很困惑NSRunLoop
是thread safe or not
。所以我需要一些澄清,它是否是线程安全的,为什么?
任何帮助都很明显。
答案 0 :(得分:6)
在NSRunLoop
official reference documentation:
警告:NSRunLoop类通常不被认为是线程安全的,并且只能在当前线程的上下文中调用其方法。您永远不应该尝试调用在不同线程中运行的NSRunLoop对象的方法,因为这样做可能会导致意外结果。
答案 1 :(得分:1)
NSRunLoop
不是thread safe
。有关详细参考,请参阅Apple's Guidelines。
答案 2 :(得分:0)
不,不是。
中的文档警告:通常不认为NSRunLoop类 线程安全及其方法只应在上下文中调用 当前线程。你永远不应该试着调用一个方法 NSRunLoop对象在不同的线程中运行,这样做可能 导致意想不到的结果。
答案 3 :(得分:0)
它不仅不是线程安全的,而且是特定于线程的。在NSObject
之间传递消息的每个线程都必须包含自己的NSRunLoop
。访问另一个线程的runloop可能会扰乱跟踪的周期,例如-autorelease
d个对象,像NSTimer
这样的定时事件,以及像-runUntilDate:
这样的事件设置的子runloops。另外,我假设NSRunLoop
将使用特定于线程的数据来存储一些信息。这意味着您可能导致特定于线程的数据与对象存储数据之间的数据不匹配。