混淆方法语法&目标C中的命名约定

时间:2013-01-05 04:47:08

标签: objective-c syntax methods

我正在学习objective-c(via apple),刚刚完成解释方法语法的部分。

我决定在'helper'类中编写一个非常简单的方法,它会添加两个数字......

界面......

+ (int)addTwo:(int)num1 secondNum:(int)num2;

...实施

+ (int)addTwo:(int)num1 secondNum:(int)num2 {
    return num1+num2;
}

...使用

int test = [MyClass addTwo:1 secondNum:2];

现在我的问题是这个......

一切都在编译并且在语法上是正确的,但是,在我看来,这种方法的使用非常尴尬,而且在我看来应该是像...一样的东西......

int test2 = [MyClass addTwo:firstNum:(1)secondNum:(2)]

基本上,在解释1是第一个数字而2是第2个时更为冗长。

当我写这篇文章时,我看到我可以写出类似“addTo:1,thisNumber:2”的内容,这更清楚,但我担心我会遗漏一些重要内容,或者我没有注意到课程试图教。

我已经习惯了Java,所以很多东西在某些方面都是新的,如果这是客观的c代码编写方式,那就完全没问题了,但我只是想确保我没有遗漏任何东西。 / p>

提前致谢。

2 个答案:

答案 0 :(得分:2)

命名目标C方法需要一些时间习惯:想法是将第一个参数的描述“粘合”到方法的名称:

+ (int)addFirstNum:(int)num1 toSecondNum:(int)num2 {
    return num1+num2;
}

我们的想法是将您的选择器的名称读作接近英语,因为您认为合理。在这种情况下,选择器的名称为addFirstNum:toSecondNum:,并且在英语中显示为OK。

答案 1 :(得分:0)

int test2 = [MyClass addTwo: firstNum:(1) secondNum:(2)]

在此提案中,您似乎将firstNumsecondNum视为变量名称。那是错的。

在Objective-C中,方法名称是+addFirstNum:secondNum:,传入的参数是冒号:[MyClass addFirstNum:1 secondNum:2],但没有像变量名这样的内容。

在具有像Python这样的命名参数的语言中,您可以addNums(first = 1, second = 2)并且它等于addNums( second = 2, first = 1),但在目标-C中,它由冒号的位置定义。并且方法的名称不会改变。