在Apple的《采用现代Objective-C》文档中,明确规定:
枚举的类型应该是NSInteger。
此外,对于NS_OPTION
宏,他们说:
但是,选项的类型通常应该是NSUInteger。
大多数情况下,我使用的枚举值从来不是负的,因此我将它们定义为NSUInteger
。
这个决定背后的理由是什么?
苹果公司有人知道这种名为"Swift"的新语言。Swift对类型的要求非常严格,所以混合使用有符号值和无符号值是非常不方便的。因此,你应该使用NSInteger,即使你知道值永远不会是负的。
枚举不能保证只有正值。在某些情况下,-1
可以用来标记错误。
这里Apple详细介绍了这个主题