以前我有一个方法可以完成一些需要BOOL的任务。在XCode中对BOOL进行ENUM转换的警告
-(void)processUserBasedonStatus:(BOOL)newUser
然后我定义的NS_ENUM接受更多的国家这样
typedef NS_ENUM(NSInteger, Status)
{
StatusNewUser=0,
StatusCurrentUser,
StatusOldUser,
StatusOther
};
和更新的方法来使用新的ENUM PARAM
-(void)processUserBasedonStatus:(Status)userStatus
一切运作良好,除了Xcode中没不会抱怨忘记更新通话方式的地方,例如
[self processUserBasedonStatus:YES];
[self processUserBasedonStatus:NO];
在这种情况下,YES & NO只会映射到ENUM的前2个值。我尝试了Xcode中的警告列表,但没有任何东西允许编译器提出这个警告。
有没有办法让编译器警告我们这种类型的行为?
Objective-C中'NO'被定义为'0',YES被定义为'1',所以它是完全合法的。 – vadian
嗯XCode 9.0.1我不能重现这个获取错误'不能初始化类型为'BOOL'(又名'布尔')'' – schmidt9
@ schmidt9,我刚刚更新到9.0.1和右值类型'状态'的参数和我没有得到这个警告。我想知道在您的项目设置中是否启用了触发此错误的警告? – ArdenDev