如何解决类型为OBLIGATORY的属性是一个枚举值
我希望我的班级拥有一个只能从枚举中分配一个值的属性,这是我的头文件:
@interface Terminal : NSObject
NS_ENUM(NSInteger,TerminalType) {
tOnline,tOffline
};
@property (nonatomic,assign) TerminalType type;
@end
问题是,尽管显然所有内容都是正确的,但我可以通过设置为属性分配任何值
Terminal *t = [[Terminal alloc] init];
t.type = 54;
我应该如何实现该类,以便该属性仅支持枚举中定义的值?
解决方法
Objective-C枚举是C枚举,并且C枚举允许这样做,尽管您可能会在分配位置收到警告。您可以实现自己的属性设置器,在其中检查所有有效值,否则检查@throw
和NSException
。
如果NS_CLOSED_ENUM
宏适合并且可以在您的SDK中使用,则最好使用它代替NS_ENUM
宏,因为它明确告诉编译器没有其他值会变成将来有效,这可能会使编译器针对它知道不好的值发出更严格的警告。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。