2012-08-02 64 views
0

我正在为iPad编写代码。我有一个点的结构,我定义:如何从一个Objective-C方法返回结构?

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

这是我的代码,以从客观-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的方法的印象(例如,允许我通过值传递)。

任何人能解释这是怎么引擎盖下发生?什么是回来,一个参考或结构?如果一个结构,为什么我需要指定一个引用作为被分配的变量的类型?

+0

请张贴实际的错误信息。 – Caleb 2012-08-02 03:35:00

+2

是在同一个文件的方法'ReadPoint',或看到它通过进口'Point32_t'定义是什么?如果编译器不知道方法的返回类型是什么,它将默认为'id'(其行为与'NSObject *'相同,即指针)。我怀疑它认为'ModalityPan'是一个'id',因为它不知道'Point32_t'实际是什么。检查你的'#import'列表。 – 2012-08-02 03:45:07

+0

我复制并粘贴代码,它工作得很好(除了我不知道是什么'ReadInt'一样)。 – borrrden 2012-08-02 03:46:18

回答

0

那么事实证明,编译器是在警告我在我的方法不是在@interface定义和方法的落实是用我这下面一个非常间接的方式。所以编译器似乎无法弄清楚返回类型是什么。它现在编译正确。

相关问题