使用Obj-C方法调用是通过消息实现的,因此,一个对象接收一条消息,如果该消息具有相应的选择器,则它会在对象实例上执行该方法。
话虽如此,是否存在消息在进程中排队的任何类型的队列?这是一个串行队列还是并发队列?此队列是否保证线程安全(例如SingleThreaded apartment)
答案 0 :(得分:3)
“消息”是对ObjC中方法调用的概念性理解;在实践中,它只是一个动态的调度机制。调用仍然会发生并在您创建的线程上同步返回。
ObjC消息传递不像每线程消息泵那样工作,例如听起来像你可能想到的Windows消息。有办法IPC,当然还有在后台线程上设置串行或并发排队工作的方法(参见Grand Central Dispatch),但这些方法都与实际的ObjC消息传递调度机制无关。方法调用。
(你可能会看到Cocoa中的一些跨线程东西绑定到一个名为“run loop”的Cocoa本地概念,如果你使用NSObject的-performSelector...
方法来调用其他线程上的东西,那么将使用运行循环来安排那些调用,并保证排序。但这是一个比“消息”本身更高阶的概念。)
答案 1 :(得分:0)
没有队列,没有人为您保证线程安全。