从方法返回多个非Objective C对象/变量

时间:2011-10-17 18:08:21

标签: objective-c methods global-variables nsdictionary

我知道当所有对象都是Objective C类型的对象时,NSDictionary可用于从方法返回多个东西,但是有没有办法打包非Objective C的对象?

我有一个方法需要返回一个int和一个IplImage。如果不将IplImage转换为NSValue(我不知道该怎么做并希望避免),我可以从方法中返回2个项吗?

另请注意,此方法是在一个单独的类中定义的,因此我不认为我可以使用类变量来存储int(或者我可以吗?)。

感谢。

3 个答案:

答案 0 :(得分:1)

这种方法适用于简单的情况,我相信你已经看过了:

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

它会返回BOOLNSError

要返回int

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

使用这种方法,您可以像这样声明您的方法:

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

然后调用者的代码采用以下形式:

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

答案 1 :(得分:1)

如果NSError**解决方案不适合您,您可能需要创建一个同时包含structint的帮助IplImage

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

然后传递它。

答案 2 :(得分:0)

简答:不。

常见的方法就是你所描述的,使用NSDictionary。不幸的是,这意味着使用NSValue处理非标准类型(NSNumber等)。

或者你可以使用in / out params,类似于大多数方法使用NSError的方式。