访问类的变量而不是值

时间:2016-08-08 00:54:37

标签: xcode

假设我有一个包含变量 a,b,c d 的玩家类。

根据某些情况,这些变量中的任何一个都将被传递给一个函数,例如: [self calculateSomethingWithVariable: player.c];

我遇到的困难是试图弄清楚如何做这样的事情:

- (void)calculateSomethingWithVariable:(Type *)Value {
      Value = something;
}

其中Value player.a player.b ,而不是 a 的实际值b ,如果这是有道理的。

1 个答案:

答案 0 :(得分:1)

首先 - 不要对变量使用大写名称。它很难说出变量是什么,什么是类型。

其次,您可以将代码更改为以下内容:

- (void)calculateSomethingWithVariable:(Type **)variableRef {
     *variableRef = something;
}

基本上,您将指针传递给变量而不是直接引用。所以当你这样做时(假设你的alb,c和d是Player类的属性:

Type *localC = player.c:
[self calculateSomethingWithVariable: &localC];
Player.c = localC;

这是Apple的一些API所采用的方法,其中要设置的变量需要传递而不是它的值。在你的情况下(假设代码基本上和你的例子一样简单),只返回新值会简单得多:

- (Type *)calculateSomethingWithVariable:(Type *)oldValue {
     // Do something with old value.
     return somethingBasedOnOldValue;
}
Player.c = [self calculateSomethingWithVariable: player.c];