2011-10-17 5 views
0

NSDictionary는 모든 객체가 ObjectiveC 유형 객체 인 경우 메서드에서 여러 객체를 반환하는 데 사용할 수 있지만 Object가 아닌 객체를 패키지화하는 방법입니다. 기음?메서드에서 비 목적 C 객체/변수를 여러 개 반환하는 중

int 및 IplImage를 반환해야하는 메서드가 있습니다. IplImage를 NSValue로 변환하지 않고 (어떻게해야 할 지 모르지만 피하기를 원함), 메소드에서 2 항목을 반환 할 수 있습니까?

또한이 메서드는 호출되는 별도의 클래스에 정의되어 있으므로 클래스 변수를 사용하여 int를 저장할 수 있다고 생각하지 않습니다.

감사합니다. 이 방법은 간단한 경우에 작동합니다

답변

1

, 나는 당신이 그것을 보았다 확신 :

- (BOOL)caclulate:(NSError**)outError; 

그것은 BOOLNSError 반환합니다.

int으로 돌아 가기 :

- (int)calculate:(IplImage*)outImage; 

을 다음 호출자의 코드는 다음과 같은 형태 걸립니다 : 그 방법을 사용

- (BOOL)caclulate:(int*)outInt; 

를, 당신은 다음과 같이 당신의 방법을 선언 할 수 있습니다

IplImage outImage; 
int result = [object calculate:&outImage]; 
+0

IplImage가 어디에서 반환 되었습니까? –

+0

@ user901505 답변 확장 됨 – justin

0

짧은 대답 : 아니오.

일반적인 방법은 NSDictionary를 사용하여 설명했습니다. 불행히도, NSValue 비표준 형식 (NSNumber 등) 작업하는 것을 의미합니다.

또는 대부분의 메서드가 NSError에서 작동하는 것과 비슷한 in/out 매개 변수를 사용할 수 있습니다.

typedef struct _Data { 
    int num; 
    IplImage image; 
} Data; 

다음 주위를 전달합니다 NSError** 솔루션은 당신을 위해 작동하지 않습니다

1

경우 모두 intIplImage을 보유 도우미 struct을 만들 수 있습니다.