NS_ENUM vs enum

Ros*_*nko 10 objective-c

Objective C提供了几种声明枚举的方法.它可以通过typedef enum或声明NS_ENUM.NS_ENUM宏将类型名称作为参数,我并不完全理解它的含义.我没有NS_ENUM在官方Apple文档中找到宏的描述.使用enum和有NS_ENUM什么区别?另一个问题是,是否可以使用任何其他类型NS_ENUM而不是NSInteger其相对整数类型?

Sta*_*ash 12

NSHipster提供了一个非常好的帖子,彻底解释了这一点:

http://nshipster.com/ns_enum-ns_options/

引用底线:

这种方法结合了所有上述方法中的最佳方法(enum,typedef enum),甚至为编译器提供了类型检查switch语句完整性的提示.


Ser*_*scu 7

主要区别在于typedef NS_ENUM正确转换为Swift枚举,而typedef enum不是.