ObjC uses messages where most OO languages use methods.
ObjC still has methods. Methods are concrete blocks of code. A message is an abstract ‘name of a method’ which, due to ObjC’s dynamic nature, can invoke any number of methods.
They are written like this:
[receiver message]
See http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/LanguageSummary/chapter_5_section_2.html for more info.
A Rationale for Dynamic Method Dispatch by John Hornkvist - http://www.toastedmarshmallow.com/Articles/DORationale.pdf
Objective-C objects communicate with each other by sending messages. The message being sent is called the selector, and the destination object is called the receiver.
Typical Objective-C messages looks like this:
int result = [anObject messageNameWith:argument1 andAlso:argument2];
Objective-C messages have four components: a return value, a target, a selector, and zero or more arguments.
If the object does not implement the selector, instead of immediately issuing an error, the Objective-C runtime sends another message to the object, the -forwardInvocation: message.
Selector values can be computed using the @selector() statement:
SEL theSelector = @selector(messageName:anotherArgument:)
returns the selector to -messageName:anotherArgument:. By using the theSelector a message can be sent to anObject using Cocoa’s -performSelector::
// -performSelector: returns a type of kind id, so we must cast it into a int. int result = (int)[anObject performSelector:theSelector withObject:argument1 withObject:argument2];
The Objective-C Runtime (ObjCRuntime) message mechanism works well with other programming languages.
Examples:
Code written in C/C++ can retrieve selectors and send messages by C glue code (like ObjC can call C routines). However, note that CocoaFramework provides the utility class NSInvocation for this purpose if you are using Cocoa. See also: http://developer.apple.com/documentation/Cocoa/Reference/ObjCRuntimeRef/index.html
PyObjC, see http://pyobjc.sourceforge.net/doc/intro.php
See also: CocoaBridges