-(void) setupMyLocation {
NSArray *viewControllerArray = [navigationUpdateFromDetail.navigationController viewControllers];
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 2;
NSLog(@"Parent view controller: %@", [viewControllerArray objectAtIndex:parentViewControllerIndex]);
switch(parentViewControllerIndex){
case 0:
self.myLocation = navigationUpdateFromDetail.currentLocation;
break;
case 1:
YANAVAppDelegate *currentObject = (YANAVAppDelegate*)[[UIApplication sharedApplication]delegate];
// self.myLocation = currentObject.givenLocation;
break;
default: break;
}
}
我似乎无法弄清楚为什么我一直收到错误“期待在YANAVAppdelegate之前表达”。
我似乎无法理解为什么这不会编译。感谢任何意见..提前感谢。
答案 0 :(得分:3)
不要在switch语句中定义变量(currentObject)。
答案 1 :(得分:1)
如果你需要在case语句中定义一个变量,你可以使用大括号(顺便说一下,这种技术也适用于C ++):
-(void) setupMyLocation {
NSArray *viewControllerArray = [navigationUpdateFromDetail.navigationController viewControllers];
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 2;
NSLog(@"Parent view controller: %@", [viewControllerArray objectAtIndex:parentViewControllerIndex]);
switch(parentViewControllerIndex) {
case 0:
self.myLocation = navigationUpdateFromDetail.currentLocation;
break;
case 1:
{
YANAVAppDelegate *currentObject = (YANAVAppDelegate*)[[UIApplication sharedApplication]delegate];
// self.myLocation = currentObject.givenLocation;
break;
}
default:
break;
}
}
一位C ++专家解释过我,这为你的变量提供了一个上下文堆栈,以便它们存在,switch / case语句不会自动提供。如果在该上下文中创建任何对象,请记住删除/释放对象,否则这是一种容易导致内存泄漏的方法。
如果你问我,我个人总是在我的案例陈述中使用大括号;)你永远不知道将来你是否需要它们,这会让事情变得更容易理解。