0

我正在为 iPad 编写代码。我有一个我定义的点结构:

typedef struct __Point32_t
{
    int32_t x;
    int32_t y;
}Point32_t;

这是我从 Objective-C 方法接收结构的代码:

Point32_t ModalityPan = [self ReadPoint];

这是方法:

-(Point32_t)ReadPoint
{
    Point32_t P;
    P.x = [self ReadInt];
    P.y = [self ReadInt];
    return P;
}

将返回值分配给结构会在编译时产生错误。该错误声称我的初始化程序无效。如果我将作业更改为:

Point32_t * ModalityPan = [self ReadPoint];

错误消失了。所以我想知道在Objective-C中实际传回的是什​​么。我搜索了许多帖子,其中一些是在 SO 上的,我的印象是结构在 Obj-C 中的方法之间传递和返回,而无需引用结构(例如,我可以按值传递)。

谁能解释这里发生了什么?什么回来了,参考还是结构?如果是结构,为什么我需要将引用指定为分配给的变量类型?

4

1 回答 1

0

事实证明,编译器以一种非常间接的方式警告我,我的方法没有在@interface 中定义,并且该方法的实现低于我的使用方法。所以编译器似乎无法弄清楚返回类型是什么。它现在可以正确编译。

于 2012-08-02T03:55:35.833 回答