今天写一个东西, 突然发现在switch里面不能定义对象,否则会出现Expected expression错误
直接上代码:
switch (_refreshMode) {
case XMYBasicTableViewControllerRefreshModelNone:
break;
case XMYBasicTableViewControllerRefreshModelHeaderRefresh:
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
case XMYBasicTableViewControllerRefreshModelFooterRefresh:
break;
}
网上查询了一下, 发现原因主要由以下三点:1.如果就这样创建对象的话,对象的作用域是在俩个花括号之间 也就是整个switch语句
2.但是大家都直到switch中每一个case都是各自相对封闭的空间 也就是switch中的语法是不允许对象作用域跨域不同case之间的
3.就是出于这种原因 才会报错Expected expression,所有解决的办法是把对象创建在一个case的作用域里 即给这个case加上花括号
于是修改之后代码如下
switch (_refreshMode) {
case SDBasicTableViewControllerRefeshModeNone:
{
;
}
break;
case SDBasicTableViewControllerRefeshModeHeaderRefresh:
{
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
[refresh addTarget:self action:@selector(pullDownRefreshOperation) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
}
break;
case SDBasicTableViewControllerRefeshModeFooterRefresh:
{
}
break;
}