Bizzare方法签名,带有未命名的参数(obj-c)

oco*_*odo 4 objective-c method-names

我不知道这个语法是有效的.

+ (void) methodName:(TypeObject *)typeObject1:(TypeObject *)typeObject2;
Run Code Online (Sandbox Code Playgroud)

然后这样称为:

[object methodName:obj1:obj2];
Run Code Online (Sandbox Code Playgroud)

我发现它很丑陋和令人不安,但它构建了.

有人能指出我的参考资料,解释为什么这是有效的.

FWIW这个来自的代码库(继承),充斥着草率,懒惰的东西,几十个拼写错误,看起来像是由没有必要再次阅读它的人格式化.(再次谢谢你解开.)

Vik*_*ica 8

这是一个充分证明并记录在案的特征(pdf,第14页)

原则上,Rectangle类可以改为实现setOrigin:: 第二个参数没有标签的方法,该方法将按如下方式调用:

[myRectangle setOrigin:30.0 :50.0]; // This is a bad example of multiple parameters

但苹果不鼓励使用没有关键字的参数传递:

在所有参数之前使用关键字
- (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag; - >对.
- (void)sendAction:(SEL)aSelector :(id)anObject :(BOOL)flag; - >错了.

为什么它被Objective-C的创造者所允许,我不知道.也许它与Smalltalk遗产有关.