2016-08-08 12 views
1

変数a、b、cdを含むプレーヤークラスがあるとします。値の代わりにクラスの変数へのアクセス

特定の状況によっては、これらの変数のいずれかが関数に渡されます。 [self calculateSomethingWithVariable: player.c];

私はこのような何かをする方法を理解しようとしているやってトラブルを抱えている:

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

はどこValueplayer.aまたはその代わりに実際の値のplayer.bする必要がありますまたはbの場合は意味があります。

答えて

1

まず、変数に大文字の名前を使用しないでください。それは変数が何であり、どのようなタイプなのかを知るのが難しくなります。

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

基本的には変数へのポインタではなく、直接の参照を渡す:

第二に、あなたはこのような何かにあなたのコードを変更することができます。これは、変数が設定されるAppleのいくつかのAPIに取ったアプローチの一種である

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

渡す必要がある。だから、あなたはこれを呼び出すときに(あなたのALB、CとDを推定プレーヤークラスのプロパティは、あなたのケースでは(コードは基本的にあなたの例ほどシンプルであると仮定します)、新しい値を返すだけで簡単になります:

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