I love that you have unified the way we call methods and functions in Swift 2. It eliminates a great deal of confusion for those new to the language.
An outstanding oddity is that the first parameters label is not used while all of the other parameter labels are required.
I understand that this made calling into existing Objective-C APIs more natural and made the transition easier - but we will very quickly get to a point where people learn Swift who don't already know Objective-C.
Just as you have changed the init() methods to take the first parameter and its label inside so Objective-C's initWithFrame: method becomes UILabel(frame: ), it would be nice if the other Cocoa calls changed in the same way so that we got a consistency of calling. In fact, currently methods and functions are unified but init() behaves differently. I'd love for all three to behave the same way as init().
I've heard the argument from Apple engineers that the decision was made because most of the time we are calling functions with 0 or 1 parameter. I could understand not using parameter labels if there is only one parameter. My issue is that when there are multiple parameters, I would like them all to be treated syntactically the same in the call.
In addition, a method like moveBy(x:Int, y: Int) would be called as moveBy(3, y:5). Yes I can force it using moveBy(x x:Int, y: Int) or moveByX(x:Int, y:Int) but the lack of symmetry makes this non-obvious to writers and readers. In this example, I also don't know how to properly refer to the function.
Submitted as Radar: 21440192
Thank you