簡體   English   中英

類型為 OBLIGATORY 的屬性是一個枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM