Objective C切换语句和命名整数常量 [英] Objective C switch statements and named integer constants

查看:145
本文介绍了Objective C切换语句和命名整数常量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



为了区分两个滚动视图,我有一个控制器,作为两个滚动视图的委托,放置在由上述视图控制器管理的视图中。尝试使用 switch 语句(而不是简单的指针与 if 语句比较)。我已将这两个滚动视图标记为0和1像这样

  NSUInteger const kFirstScrollView = 0; 
NSUInteger const kSecondScrollView = 1;

当我尝试在switch语句中使用这些常量时,编译器说case语句不是常量。

 开关(scrollView.tag){
case kFirstScrollView:{
// do stuff
}
case kSecondScrollView:{
// do stuff
}
}

我做错了什么?

解决方案

这可以通过使用匿名不一定如此)枚举类型:

 枚举{
kFirstScrollView = 0,
kSecondScrollView = 1
};

switch(scrollView.tag){
case kFirstScrollView:{
// do stuff
}
case kSecondScrollView:{
// do stuff
}
}

这将无错编译。 >

I have a controller which serves as a delegate to two scrollviews which are placed in view managed by aforementioned view controller.

To distinguish between two scroll views I'm trying to use switch statement (instead of simple pointer comparison with if statement). I have tagged both scroll views as 0 and 1 like this

NSUInteger const kFirstScrollView = 0;
NSUInteger const kSecondScrollView = 1;

When I try to use these constants in a switch statement, the compiler says that case statements are not constants.

switch (scrollView.tag) {
    case kFirstScrollView: {
      // do stuff
    }
    case kSecondScrollView: {
      // do stuff
    }
}

What am I doing wrong?

解决方案

This can be solved through the use of an anonymous (though not necessarily so) enum type:

enum {
    kFirstScrollView = 0,
    kSecondScrollView = 1
};

switch (scrollView.tag) {
    case kFirstScrollView: {
      // do stuff
    }
    case kSecondScrollView: {
      // do stuff
    }
}

This will compile without errors.

这篇关于Objective C切换语句和命名整数常量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆