7
此代碼不會編譯並生成錯誤消息「預期類型」。由於類型是在上面聲明的,所以我不明白爲什麼。定義類型時,不明白「方法聲明」中「預期類型」編譯錯誤的原因
enum TMyType
{
Etype1,
Etype2
};
@interface Factory : NSObject
+ (void) foo: (TMyType) actionType;
@end
此代碼不會編譯並生成錯誤消息「預期類型」。由於類型是在上面聲明的,所以我不明白爲什麼。定義類型時,不明白「方法聲明」中「預期類型」編譯錯誤的原因
enum TMyType
{
Etype1,
Etype2
};
@interface Factory : NSObject
+ (void) foo: (TMyType) actionType;
@end
要定義自定義類型,正確的方法是使用typedef。
的Try ...
typedef enum
{
Etype1,
Etype2
} TMyType;
編輯: 不久之後,這一問題被提出和回答,蘋果公司推出了一種新的方式做枚舉數據類型。 Here's關於它的深入文章。
typedef NS_ENUM(NSInteger, TMyType) {
Etype1,
Etype2
};
+ (void) foo: (enum TMyType) actionType;
,或者使用.mm
(和重新標記問題與objective-c++
)。
謝謝,.mm代表什麼? – Gruntcakes 2012-02-08 19:31:13
@Mungbeans它代表一個Objective-C++源文件。在C/Obj-C中,枚舉必須完全鍵入,例如'enum myType myArg = myEnumValue;'。在C++中,您可以簡單地引用它:'myType myArg = myEnumValue;',因爲C++編譯器會自動推斷'enum'。 – 2012-02-08 19:33:13
'objective-C++'就像我在括號中所說的那樣。 – 2012-02-08 19:33:19