D/Objective-C Preliminary Design

Michel Fortin michel.fortin at michelf.com
Thu Nov 4 05:08:11 PDT 2010


On 2010-11-04 07:37:25 -0400, Kagamin <spam at here.lot> said:

> Do you require explicit selector declaration? I'm afraid, this will 
> lead to a large duplication:
> 
> extern (Objective-C)
> class NSComboBox : NSTextField
> {
>     private void* _dataSource;
> 
>     void insertItemWithObjectValue(ObjcObject object, NSInteger 
> atIndex) [insertItemWithObjectValue:atIndex:];
>     void insertItemWithObjectValue(ObjcObject object) 
> [insertItemWithObjectValue:];
> }
> 
> comboBox.insertItemWithObjectValue(val, idx); // [comboBox 
> insertItemWithObjectValue:val atIndex:idx]
> comboBox.insertItemWithObjectValue(val);      // [comboBox 
> insertItemWithObjectValue:val]
> 
> compiler can build selector automatically from function signature.

More or less. You need to specify the selector explicitly only if you 
need the function to have specific selector. Otherwise the compiler 
will generate one for you.

The compiler-generated selector will ensure that function overloading 
works by adding the mangled parameter types. As an exception for 
@property setters, the compiler will convert function 'name' to 
selector 'setName:' which should make properties work with key-value 
coding. For @IBAction functions, it'll use directly the name of the 
function.

So you should rarely have to specify the selector unless you're writing 
bindings to existing Objective-C objects. And, hopefully, creating 
bindings can be automated.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list