如何访问某些方法的 Objective C 未命名参数?
How to access Objective C unnamed parameters of some method?
我在网上找到的关于Objective C中方法参数的所有信息都是可选的,但是如果我不标记某些方法的每个输入参数,我该如何访问它们?
这是我正在尝试做的一个例子:
- (float) divNum1: (int) AndNum2: (int);
然后它甚至没有编译,说
an identifier was expected before ;
所以在执行上述方法时我想访问每个输入参数:
- (float) divNum1: (int) AndNum2: (int)
{
return <first parameter> / <second parameter>;
}
我知道如何使用标签来解决这个问题,我需要的是不命名每个参数的解决方案。
交错的参数名称是可选的,而不是参数名称。
无论如何,这是声明:
- (float)div:(int)num1:(int)num2;
用法:
[self div:2 :3];
实现:
- (float)div:(int)num1:(int)num2 {
return (float)num1 / num2;
}
该方法本身称为 -div::
。 (注意两个冒号)
但是苹果discourages this behaviour.
如果您不喜欢这样,您可以尝试类似 swift 的方法,您可以在其中省略方法的许多部分。
您应该改用 - (float) div:(int)num1 with:(int)num2;
。
您弄错了方法的哪一部分是可选的。伪参数方法名称是可选的,但所有物理参数都必须存在。考虑以下方法。
- (void)parameterOne:(int)p1 :(int)p2
// ^^^
{
int p3 = p1 * p2;
}
这个方法会这样调用。
[self parameterOne:10 :20];
如您所见,方法 name 的相应部分是可选的,但参数名称不是。
标签是在类型之前的东西。您可以省略它们(第一个除外,因为它是方法的名称)。所以你可以这样声明:
- (float) divNum1: (int) a : (int) b;
并这样定义它:
- (float) divNum1: (int) a : (int) b {
return (float)a /(float)b;
}
并这样称呼它:
[self divNum1:5 :6];
您不能在类型之后省略名称,因为这些是方法主体使用的内部名称。
我在网上找到的关于Objective C中方法参数的所有信息都是可选的,但是如果我不标记某些方法的每个输入参数,我该如何访问它们?
这是我正在尝试做的一个例子:
- (float) divNum1: (int) AndNum2: (int);
然后它甚至没有编译,说
an identifier was expected before ;
所以在执行上述方法时我想访问每个输入参数:
- (float) divNum1: (int) AndNum2: (int)
{
return <first parameter> / <second parameter>;
}
我知道如何使用标签来解决这个问题,我需要的是不命名每个参数的解决方案。
交错的参数名称是可选的,而不是参数名称。
无论如何,这是声明:
- (float)div:(int)num1:(int)num2;
用法:
[self div:2 :3];
实现:
- (float)div:(int)num1:(int)num2 {
return (float)num1 / num2;
}
该方法本身称为 -div::
。 (注意两个冒号)
但是苹果discourages this behaviour.
如果您不喜欢这样,您可以尝试类似 swift 的方法,您可以在其中省略方法的许多部分。
您应该改用 - (float) div:(int)num1 with:(int)num2;
。
您弄错了方法的哪一部分是可选的。伪参数方法名称是可选的,但所有物理参数都必须存在。考虑以下方法。
- (void)parameterOne:(int)p1 :(int)p2
// ^^^
{
int p3 = p1 * p2;
}
这个方法会这样调用。
[self parameterOne:10 :20];
如您所见,方法 name 的相应部分是可选的,但参数名称不是。
标签是在类型之前的东西。您可以省略它们(第一个除外,因为它是方法的名称)。所以你可以这样声明:
- (float) divNum1: (int) a : (int) b;
并这样定义它:
- (float) divNum1: (int) a : (int) b {
return (float)a /(float)b;
}
并这样称呼它:
[self divNum1:5 :6];
您不能在类型之后省略名称,因为这些是方法主体使用的内部名称。