我很驚訝地發現,Xcode中沒有對下面的代碼,這是用C無效發出一個錯誤:Objective-C enum的基礎類型能夠被指定嗎?
typedef enum : NSUInteger {
FLAG_A = 1,
FLAG_B = 2,
FLAG_C = 4
} MyFlags;
這似乎使NSUInteger
基礎類型的MyFlags
枚舉的,非常類似於C#的語法用於設置枚舉的基礎類型。
這個語法是做它看起來的,還是它的意思?
我很驚訝地發現,Xcode中沒有對下面的代碼,這是用C無效發出一個錯誤:Objective-C enum的基礎類型能夠被指定嗎?
typedef enum : NSUInteger {
FLAG_A = 1,
FLAG_B = 2,
FLAG_C = 4
} MyFlags;
這似乎使NSUInteger
基礎類型的MyFlags
枚舉的,非常類似於C#的語法用於設置枚舉的基礎類型。
這個語法是做它看起來的,還是它的意思?
它是從C++ 11中借用的一個功能,用於確保枚舉的特定大小。它允許在框架的公共API中使用枚舉,而不必擔心ABI最終會崩潰。
Clang implements this feature並允許它在Objective-C中用作語言擴展。
這將在目標c中正常工作。您可以在枚舉中爲這些參數設置任何值。