【发布时间】:2017-10-18 14:00:20
【问题描述】:
以前我有一个方法可以完成一些接受 BOOL 的任务。
-(void)processUserBasedonStatus:(BOOL)newUser
然后我定义了一个 NS_ENUM 来接受更多这样的状态
typedef NS_ENUM(NSInteger, Status)
{
StatusNewUser=0,
StatusCurrentUser,
StatusOldUser,
StatusOther
};
并更新了使用新 ENUM 参数的方法
-(void)processUserBasedonStatus:(Status)userStatus
一切都很好,除了Xcode没有抱怨我忘记更新调用方法的一些地方,即
[self processUserBasedonStatus:YES];
[self processUserBasedonStatus:NO];
在这种情况下,YES & NO 只会映射到 ENUM 的前 2 个值。我尝试了 Xcode 中的警告列表,但没有任何东西允许编译器显示此警告。
有没有办法让编译器警告我们这种行为?
【问题讨论】:
-
在 Objective-C 中
NO被定义为0而 YES 被定义为1,所以它是完全合法的。 -
Hmm 在 XCode 9.0.1 中我无法重现此错误
Cannot initialize a parameter of type 'Status' with an rvalue of type 'BOOL' (aka 'bool') -
@schmidt9,我刚刚更新到 9.0.1,但没有收到此警告。我想知道您的项目设置中是否启用了触发此错误的警告?
-
我没有更改任何默认警告设置,但接受了 Xcode 升级项目设置的建议,因此它可能是一个标志,请查看项目设置
标签: ios objective-c xcode enums xcode9