2011-10-17 8 views
0

NSDictionaryを使用すると、すべてのオブジェクトがObjective Cタイプのオブジェクトである場合にメソッドから複数のものを返すことができますが、Objective以外のオブジェクトをパッケージ化する方法C?メソッドから複数の非Objective Cオブジェクト/変数を返す

私はintとIplImageを返す必要があるメソッドがあります。 IplImageをNSValueに変換せずに(私はやり方を知らず、避けたい)、メソッドから2つの項目を返すことはできますか?

また、このメソッドは呼び出されている別のクラスで定義されているため、クラス変数を使用してintを格納することはできません。

ありがとうございました。

答えて

1

このアプローチは、単純な場合のために働くだろう、私はあなたがそれを見ていると確信しています:

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

それはBOOLNSErrorを返します。

int戻るには:そのアプローチを使用して

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

を、あなたはこのようなあなたのメソッドを宣言することができます。

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

して、呼び出し側のコードは次の形式を取ります。

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

私は理解していないので、どこでIplImageが返されますか? –

+0

@ user901505 answer expanded – justin

0

短い答え:いいえ。

一般的な方法は、NSDictionaryを使用して説明したものです。残念ながら、それは非標準型(NSNumberなど)のNSValueでの作業を意味します。

また、ほとんどのメソッドがNSErrorで動作するのと同様に、イン/アウトパラメータを使用できます。

1

NSError**ソリューションがあなたのために動作しない場合は、intIplImageの両方を保持しているヘルパーstruct作成する必要があります

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

をし、それを周りに渡します。

関連する問題