我知道当所有对象都是Objective C类型的对象时,NSDictionary可用于从方法返回多个东西,但是有没有办法打包非Objective C的对象?
我有一个方法需要返回一个int和一个IplImage。如果不将IplImage转换为NSValue(我不知道该怎么做并希望避免),我可以从方法中返回2个项吗?
另请注意,此方法是在一个单独的类中定义的,因此我不认为我可以使用类变量来存储int(或者我可以吗?)。
感谢。
答案 0 :(得分:1)
这种方法适用于简单的情况,我相信你已经看过了:
- (BOOL)caclulate:(NSError**)outError;
它会返回BOOL
和NSError
。
要返回int
:
- (BOOL)caclulate:(int*)outInt;
使用这种方法,您可以像这样声明您的方法:
- (int)calculate:(IplImage*)outImage;
然后调用者的代码采用以下形式:
IplImage outImage;
int result = [object calculate:&outImage];
答案 1 :(得分:1)
如果NSError**
解决方案不适合您,您可能需要创建一个同时包含struct
和int
的帮助IplImage
:
typedef struct _Data {
int num;
IplImage image;
} Data;
然后传递它。
答案 2 :(得分:0)
简答:不。
常见的方法就是你所描述的,使用NSDictionary。不幸的是,这意味着使用NSValue处理非标准类型(NSNumber等)。
或者你可以使用in / out params,类似于大多数方法使用NSError的方式。