2012-08-27 103 views
3

預警myObject.h目標C:編譯器與枚舉

typedef enum { 
    GET, 
    POST 
} HTTPMethods; 

然後是@interface定義中,一個屬性:

@property (nonatomic) HTTPMethods *httpMethod; 

myClass.m,我有myObject.h然後#import

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

This似乎工作,但編譯器大聲對我說:

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

我在哪裏錯了?

回答

7

枚舉是一種內置類型,而不是一個對象。因此,您可能想要存儲整數值本身而不是指針。

@property (nonatomic, assign) HTTPMethods httpMethod; 
0

錯誤信息中有一個很大的提示!

在C和Objective C中,枚舉是用戶定義的數據類型。你已經寫了HTTPMethods *,這意味着「一個指向枚舉的指針」,而它看起來像你只是想要一個枚舉。

所以,你的屬性改成這樣:

@property (nonatomic) HTTPMethods httpMethod; 

欲瞭解更多信息,谷歌「C指針」,你會發現這樣的信息:http://pw1.netcom.com/~tjensen/ptr/pointers.htm