[英]Property whose type is OBLIGATORY an enum value
我希望我的班級有一個只能從枚舉中賦值的屬性,這是我的頭文件:
@interface Terminal : NSObject
NS_ENUM(NSInteger, TerminalType) {
tOnline,
tOffline
};
@property (nonatomic,assign) TerminalType type;
@end
問題是,雖然顯然一切都是正確的,但我可以使用 set 為屬性分配任何值
Terminal *t = [[Terminal alloc] init];
t.type = 54;
我應該如何實現類,使屬性只支持枚舉中定義的值?
Objective-C 枚舉是 C 枚舉,C 枚舉允許這樣做,盡管您可能會在賦值時收到警告。 您可以實現自己的屬性設置器,在其中檢查所有有效值,否則@throw
一個NSException
。
如果NS_CLOSED_ENUM
宏適合並且在您的 SDK 中可用,則使用它代替NS_ENUM
宏可能是個好主意,因為它明確告訴編譯器將來沒有其他值將變為有效,這可能會使編譯器對它知道是壞的值發出更嚴格的警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.