3 ms·
I think it's a bit charitable to call what Objective C does to be "message passing". The messages are not asynchronous and have only a single recipient, so in p
by Joeri 12y ago
I think it's a bit charitable to call what Objective C does to be "message passing". The messages are not asynchronous and have only a single recipient, so in practice I would say they're method calls with late binding.
- archagon 12y agoYou can do one-to-many messages via notifications, though it's less elegant.
- mpweiher 12y agoHowever, they can easily be made asynchronous and address multiple recipients. See Higher Order Messaging[1][2], first implemented in Objective-C[3]. So for example: [[myView onMainThread] setNeedsDisplay:YES]; result = [[someObject future] someMessage:arg]; combined = [[prefixes collect] stringByAppendingString:[suffixes each]]; The reason this is easy in Objective-C is because its brand of message passing is just (barely) powerful enough to qualify as message passing. In fact, if you squint just a little, you can see it as fully reified message passing with the common-case (a synchronous method is invoked) optimized. [1] http://en.wikipedia.org/wiki/Higher_order_message http://en.wikipedia.org/wiki/Higher_order_message [2] http://www.metaobject.com/papers/Higher_Order_Messaging_OOPSLA_2005.pdf http://www.metaobject.com/papers/Higher_Order_Messaging_OOPS... [3] https://github.com/mpw/MPWFoundation https://github.com/mpw/MPWFoundation
- xsmasher 12y agoAt least you can redirect messages to another recipient, and write a handler for "unhandled messages." Impossible with c++, at least with standard method calls.