2016-08-08 4 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; 
} 

은 기본적으로 당신은 변수가 아닌 직접 참조에 대한 포인터를 전달합니다. 이 변수가 설정되는 애플의 API를 일부 촬영 방식의 종류가

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

전달 될 필요가 : 그래서 당신이이를 호출 할 때 (당신의 장백의, C 및 D를 추정 플레이어 클래스의 속성은 귀하의 경우 (코드가 기본적으로 귀하의 예처럼 간단하다고 가정) 새로운 값을 반환하는 것이 훨씬 간단합니다.

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