2009-07-30 28 views
4

如果不是,並且它需要包含在一個單獨的文件中(例如MyEnums.h),每次.m或.h文件想要引用該類型還是其中一個值時,是否需要#import MyEnums.h ?可以在與Objective-C中使用它的類頭相同的文件中定義枚舉嗎?


這裏的MyClass.h的示例代碼:

#import <Foundation/Foundation.h> 

// #1 placeholder 

@interface MyClass : NSObject { 
} 

// #2 placeholder 

- (void)sampleMethod:(MyEnum)useOfEnum; 

// #3 placeholder 

@end 

這裏是我試圖定義枚舉:

typedef enum MyEnum { 
    Value1, 
    Value2 
} 

如果我試着將我的枚舉定義在#1,我得到錯誤:在'interface'之前可能沒有指定類型或存儲類。

如果我試着將我的枚舉定義在#2,我得到錯誤:預期標識符或「(」前「端」

如果我試着將我的枚舉定義在#3,我得到錯誤:在'MyEnum'之前預期')'。這是抱怨參數「useOfEnum」,因爲它的類型尚未定義。


那麼可以這樣做嗎?或者最好的方法是做什麼,並限制所需#imports的數量?

回答

5

它應該在的位置#1工作,但我認爲你需要把它寫像這樣:

typedef enum { 
    Value1, 
    Value2 
} MyEnum; 

正常工作。

更新:我已經證實了這一點(至少在Xcode 3.2中)。上面顯示的語法編譯沒有錯誤。

+0

它也可以在位置2或在枚舉實際使用之前的任何其他位置工作 - 但它在視覺上更加難於除位置1之外的任何地方。 – Chuck 2009-07-30 00:56:07

1

它看起來像你只是想念;關閉typedef枚舉聲明的結尾。

相關問題