是不是Objective-c函数参数语法怪异?

时间:2011-03-13 07:38:37

标签: objective-c

考虑以下方法:

+(void) myMethod:(int)arg1 **argument2**(int)arg2 **argument3**(int) arg3;

看看第一个参数与第二个和第三个参数不同,没有描述,给人一种不对称的印象。此外,您可以期望额外输入将在您传入时提供命名参数,但您仍然必须以正确的顺序传递它们。

任何人都可以帮我理解这个吗?

4 个答案:

答案 0 :(得分:1)

:argument2

之后,您遗失了argument3

此外,第一个参数名为myMethod。通过Apple的命名建议指南,您会看到该方法应该以识别第一个参数的语义的方式命名。

编辑:

查看此文档Coding Guidelines - Naming Methods

答案 1 :(得分:1)

这背后的逻辑虽然很难习惯但仍然存在 关于你的第一个注释,关于第一个参数的命名, Apple鼓励您按如下方式命名您的方法:

+(void)myMethodWithArg1:(int)arg1 Arg2:(int)arg2 Arg3:(int)arg3;
因此,这个名字可以像英文中的句子一样读取 (我的方法有类型为int的Arg1,类型为int的Arg2等)

关于命名的参数并且无法改变顺序,这对我来说也没有任何意义

并且我上面的评论是正确的,你错过了那些令人讨厌的东西:在params之后

此外,ObjC的语法与Smalltalk(http://www.smalltalk.org/main/)的语法有很强的关系 我鼓励你阅读它以及两种语言之间的关系

希望这会有所帮助

答案 2 :(得分:0)

希望the response to this other question能帮助您理解所看到的内容。

答案 3 :(得分:0)

方法名称应该描述第一个参数。

像:

+ (void)updateUserWithId:id andAge:age

因此,整个表达式给出了一种自然的句子。