目标C:使用枚举进行编译器警告

时间:2012-08-27 02:28:24

标签: objective-c

myObject.h

typedef enum {
    GET,
    POST
} HTTPMethods;

然后在@interface定义中,一个属性:

@property (nonatomic) HTTPMethods *httpMethod;

myClass.m中,我有#import myObject.h,然后:

myObject *obj = [[myObject alloc] init];
obj.httpMethod = POST;

这似乎有效,但编译器对我大吼:

`Incompatible integer to pointer conversion assigning to 'HTTPMethods *' from 'int'.

我在哪里错了?

2 个答案:

答案 0 :(得分:7)

枚举是内置类型,而不是对象。因此,您可能希望存储整数值本身而不是指针。

@property (nonatomic, assign) HTTPMethods httpMethod;

答案 1 :(得分:0)

错误信息中有一个很大的提示!

在C和Objective C中,枚举是用户定义的数据类型。你已经编写了HTTPMethods *,这意味着“指向枚举的指针”,而你看起来只是想要一个枚举。

所以将你的财产改为:

@property (nonatomic) HTTPMethods httpMethod;

有关详细信息,请点击“C指针”,您会找到以下信息:http://pw1.netcom.com/~tjensen/ptr/pointers.htm