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



我不知道这种语法是有效的。

+ (void) methodName:(TypeObject *)typeObject1:(TypeObject *)typeObject2;

然后这样称呼:

[object methodName:obj1:obj2];

我觉得它丑陋而令人不安,但它是建立起来的。

有人可以指出我一个解释为什么这是有效的参考资料。

FWIW 由此产生的代码库(继承的)充斥着草率、懒惰的东西、数十个拼写错误,看起来它是由不需要再次阅读它的人格式化的。(再次感谢您解脱。

这是一个精心设计且有据可查的功能(pdf,第 14 页)

原则上,矩形类可以实现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的遗产有关。

相关内容

最新更新