从Objective-c中的单个方法获取多个输出

use*_*410 4 methods objective-c

我有自己的类,我正在编写一个具有多个输入(三个浮点值)和多个输出(三个浮点值)的方法.我不知道如何从单个方法获得多个输出.有任何想法吗?

我目前的方法如下:

- (void)convertABC2XYZA:(float)a
                  B:(float)b 
                  C:(float)c 
            outputX:(float)x 
            outputY:(float)y 
            outputZ:(float)z 
{
    x = 3*a + b;
    y = 2*b;
    z = a*b + 4*c;
}
Run Code Online (Sandbox Code Playgroud)

rob*_*off 9

"返回"多个输出的一种方法是将指针作为参数传递.像这样定义你的方法:

- (void)convertA:(float)a B:(float)b C:(float) intoX:(float *)xOut Y:(float *)yOut Z:(float)zOut {
    *xOut = 3*a + b;
    *yOut = 2*b;
    *zOut = a*b + 4*c;
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

float x, y, z;
[self convertA:a B:b C:c intoX:&x Y:&y Z:&z];
Run Code Online (Sandbox Code Playgroud)

另一种方法是创建一个结构并返回它:

struct XYZ {
    float x, y, z;
};

- (struct XYZ)xyzWithA:(float)a B:(float)b C:(float)c {
    struct XYZ xyz;
    xyz.x = 3*a + b;
    xyz.y = 2*b;
    xyz.z = a*b + 4*c;
    return xyz;
}
Run Code Online (Sandbox Code Playgroud)

像这样称呼它:

struct XYZ output = [self xyzWithA:a B:b C:c];
Run Code Online (Sandbox Code Playgroud)


Mat*_*all 5

Objective-C中的方法(与Python或JavaScript不同)最多只返回1件事.创建一个"东西"来包含你想要返回的3个浮点数,然后返回其中一个浮点数.

您可以使用输出参数,而不是返回.