gpt4 book ai didi

objective-c - typedef NS_ENUM 与 typedef 枚举

转载 作者:太空狗 更新时间:2023-10-30 03:19:53 25 4
gpt4 key购买 nike

关于Adopting Modern Objective-C指南,Apple 建议使用 NS_ENUM 宏而不是枚举。我还阅读了来自 NSHipster 的解释关于 NS_ENUM 和 NS_OPTIONS。

也许我错过了一些东西,但我不太明白以下两个片段之间的区别是什么,如果有的话,为什么 NS_ENUM 是推荐的方法(除了可能,为了向后兼容与旧的编译器)

// typedef enum
typedef enum {
SizeWidth,
SizeHeight
}Size;

// typedef NS_ENUM
typedef NS_ENUM(NSInteger, Size) {
SizeWidth,
SizeHeight
};

最佳答案

首先,NS_ENUM 使用了 C 语言的一个新特性,您可以在其中指定枚举的基础类型。在这种情况下,枚举的基础类型是 NSInteger(在纯 C 中,它可以是编译器决定的任何类型,char、short,甚至是 24 位整数,如果编译器愿意的话)。

其次,编译器专门识别 NS_ENUM 宏,因此它知道您有一个枚举,其值不应像标志一样组合,调试器知道发生了什么,并且枚举可以自动转换为 Swift。

关于objective-c - typedef NS_ENUM 与 typedef 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27191638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com