2014-11-23 28 views
0

使用Obj-C方法调用是通过消息实现的,因此,一个对象接收一个消息,并且如果该消息具有相应的选择器,则它将在该对象实例上执行该方法。Objective-C方法调用和消息传递说明

话虽如此,有没有什么队列的消息排队在进程?这是一个串行队列还是并发队列?这个队列是否保证线程安全(例如SingleThreaded公寓)

回答

3

“消息”是对ObjC中方法调用的概念性理解;实际上它只是一个动态调度机制。该调用仍然发生并在您创建的线程上同步返回。

ObjC消息传递不像每个线程消息泵那样工作,例如,这听起来像你可能会想到的Windows消息。有做IPC的方法,当然还有在后台线程上设置串行或并发排队工作的方法(请参见Grand Central Dispatch),但这些方法都不能用于方法调用的实际ObjC消息调度机制。 (您可能会看到Cocoa中的一些跨线程的东西绑定到一个称为“运行循环”的Cocoa原生概念,并且如果您使用NSObject的-performSelector...方法调用其他线程上的东西,那么将使用运行循环安排这些调用并保证排序,但这是一个高于“消息”本身的高阶概念。)

0

没有队列,也没有人为你保证线程安全。