2010-01-04 4 views
13

객관적인 방법으로 두 개의 인수를 반환 할 수 있는지 궁금합니다. 예를 들어 직교 좌표 (x, y)를 반환하고 싶습니다. 기본적으로 두 개의 정수를 사용합니다. 클래스를 만들고 인스턴스를 반환하여이를 수행하는 유일한 방법은 무엇입니까? 제가 생각하지 못하는 다른 방법이 있나요, 초보자 같은 분이세요.objective-c에서 두 개의 인수를 반환 할 수 있습니까?

(문법적 도움도 감상 할 수있다.)

감사합니다,

답변

32

함수에서 하나의 값만 반환 할 수 있지만 (C와 유사) 값은 구조체를 포함하여 아무 것도 될 수 없습니다. 당신이 값으로 구조체를 반환 할 수 있기 때문에, 당신은이 같은 기능을합니다 (예를 빌려) 정의 할 수 있습니다 :

-(NSPoint)scalePoint:(NSPoint)pt by:(float)scale 
{ 
    return NSMakePoint(pt.x*scale, pt.y*scale); 
} 

이는 작은/간단한 구조체에 정말 적합합니다.

개 이상의 새로운 객체, 당신의 기능 따라서, 객체 포인터 포인터를해야 반환하려면 다음과 같이

-(void)mungeFirst:(NSString**)stringOne andSecond:(NSString**)stringTwo 
{ 
    *stringOne = [NSString stringWithString:@"foo"]; 
    *stringTwo = [NSString stringWithString:@"baz"]; 
} 
+4

이제 Swift를 소개하면 튜플을 사용하여 함수에서 여러 인수를 반환 할 수 있습니다. 자세한 내용은 [The Swift Programming Language] (https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/index.html)를 참조하십시오. – gavinb

+0

Objective C에서 primatives의 포인터를 전달하는 구문은 무엇입니까? BOOL 또는 ints와 같은. 나는 하나의 별을 제거 할 수 있다고 생각했지만 그것이 내가 바라는 전체 이야기가 아닌 것 같습니다. –

+0

@RyanPoolos는 원시 타입을 위해 C와 같습니다. 변수를 참조 (예 :'calc (int a, int b, int * c)')하고'* c = a + b;'(예를 들어). – gavinb

2

을이에 대한 NSArray을 할 수 없습니다?

+2

사전은 배열을 작성하는 것과 같은 방식으로 순서에 대해 걱정할 필요가 없으므로 더 잘 작동합니다. –

+0

그래, 보통. 나는 좌표가 항상 (* x *, * y *)이기 때문에 OP가 준 예제에 너무 많은 초점을 맞추고 있었다고 생각합니다. –

+0

모두에게 통찰력을 주셔서 감사합니다. 내가 일하고있는이 알고리즘을 알아 내려고 애 쓰고있다. 감사합니다. Nick – nickthedude

3

직접 하나 개의 값을 반환 할 수 있습니다 참조하여 다른를 반환 gs's answer에 표시되거나 구조체 유형을 작성한 다음이를 리턴하십시오. 예를 들어, 코코아에는 이미 2D 평면상의 점을 식별하는 유형 인 NSPoint이 포함되어 있습니다.

1

사전 내에서 NSDictionary를 반환하고 개체 유형 및 개수를 제한없이 저장하고 보낼 수 있습니다.

-(NSDictionary*)calculateWith:(id)arg 
{ 
NSDictionary *urDictionary [email protected]{@"key1":value1,@"Key2":value2,.....}; 
return urDictionary; 
} 
관련 문제