This is a well-kown and documented feature (pdf, p. 14)
In principle, a Rectangle class could instead implement a
setOrigin::
method with no label for the second parameter, which would be invoked as follows:
[myRectangle setOrigin:30.0 :50.0]; // This is a bad example of multiple parameters
but apple discourage everbody of using parameter passing without keyword:
Use keywords before all arguments.
- (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag;
-> Right.
- (void)sendAction:(SEL)aSelector :(id)anObject :(BOOL)flag;
-> Wrong.
Why it was allowed by the creators of objective-C, I dont know. Maybe it has to do with the Smalltalk heritage.