gpt4 book ai didi

objective-c - enum 没有被编译器类型检查?

转载 作者:行者123 更新时间:2023-12-04 19:51:48 26 4
gpt4 key购买 nike

有了这些枚举...

typedef enum {
ThisThingA = 0,
ThisThingB = 1
} ThisThing;

typedef enum {
ThatThingX = 8,
ThatThingY = 9
} ThatThing;

以及这些属性...

@property (nonatomic) ThisThing thisThing;
@property (nonatomic) ThatThing thatThing;

我可以...

self.thisThing = thatThingX;

而且我没有收到编译器发出的警告,这是我所期望的。为什么编译器没有警告?为什么我可以将 ThatThing 类型的内容分配给 ThisThing 类型的内容?

根据 Martin R 的回答进行编辑:但是如果我这样做......

[self setThisThing:thatThingX];

我收到警告:从枚举类型“ThatThing”到不同枚举类型“ThisThing”的隐式转换

(Xcode 4.6.3 和 iOS 6.0)

最佳答案

默认情况下,编译器选项“隐式枚举转换 (-Wenum-conversion)”处于启用状态,您实际上会收到警告如果您分配给不同枚举类型的变量:

ThisThing x = ThatThingX;

或者如果你使用setter方法来设置属性:

[self setThisThing:ThatThingX];

在这两种情况下你都会收到警告

implicit conversion from enumeration type 'ThatThing' to different enumeration type 'ThisThing' [-Wenum-conversion]

Only when you use the "dot" syntax to set the value

self.thisThing = ThatThingX;

然后你没有收到警告,所以这可能是编译器中的错误。

关于objective-c - enum 没有被编译器类型检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17358863/

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