2011-10-17 43 views
0

我知道當所有對象都是Objective C類型對象時,NSDictionary可以用來從方法返回多個東西,但是有沒有辦法打包非目標對象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回答擴展 – justin

0

簡答題:沒有。

常用的方法是你所描述的,使用NSDictionary。不幸的是,這意味着使用非標準類型的NSValue(NSNumber等)。

或者你可以使用類似於大多數方法與NSError一起工作的輸入/輸出參數。

1

如果NSError**解決方案並不爲你工作,你可能想創建一個幫助struct持有兩個intIplImage

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

,然後通過它周圍。

相關問題