Selector Literals (Oxygene for Cocoa)
selector keyword can be used to get a selector reference on the Cocoa platform. Selectors are feature unique to the Cocoa platform and Object Model, and they represent the name of an Objective-C runtime method.
Selectors are held in a type called
SEL, and can be used to dynamically invoke methods, for KVO, Notification center, or to pass them to other Cocoa APIs that expect a a
A selector is declared with the
selector keyword, followed by parenthesis enclosing the Objective-C name of the method, which is made up of the name, plus a colon if the method takes parameters, plus additional name and colon pairs for all parts of a multi-part method:
method compare(aOther: id)_ options(aOptions: NSCompareOptions); ... var s := selector(compare:options:);
Using the selector literal syntax will cause the compiler to perform checks if the specified selector is valid and known, and a warning will be emitted if a selector name is provided that does not match any method known to the compiler. This provides extra safety over using the
Note that by default, the Elements compiler might mangle type names and method names, for example to ensure uniqueness of overloaded methods. You can specify the
[objc] Aspect on a method to prevent mangling and make its internal name on the Objective-C runtime match the selector name.