有时Xcode会在案例后的行上显示错误“预期表达式”。例如,Xcode用红色箭头指向 UserContentViewController :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case IndexVideo:
UserContentViewController* detailViewController = [[UserContentViewController alloc] initWithUser:self.user];
[self.navigationController pushViewController:detailViewController animated:YES];
break;
}
}
如果我在我的案子周围放置括号,错误就消失了。首先,我想知道不使用大括号的问题是什么。在任何其他语言的情况下,我从未使用大括号。其次,为什么Xcode只会在极少数情况下抱怨我的案件?我无法辨别哪种类型的代码会触发此错误。
答案 0 :(得分:13)
基本上,如果要声明变量,则需要添加大括号来定义范围。
ARC还添加了一些要求(或者更严格的要求)来定义范围(因此在升级旧代码库时可能会出现一些“切换案例在受保护范围内”的错误)。这是因为ARC需要详细了解何时不能/不能引用变量,以便它可以正确处理发布。
所有内容都与向编译器提供有关已声明变量范围的足够信息有关。他们应该是单个案件的一部分还是多个案件......