如何访问某些方法的 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];

您不能在类型之后省略名称,因为这些是方法主体使用的内部名称。