0
-(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之前」。無法確定的UISharedApplication錯誤

我似乎無法把我的手指放在爲什麼這不會編譯。任何輸入讚賞..預先感謝。

回答

3

不要在switch語句中定義變量(currentObject)。

+0

謝謝你,困擾我好30分鐘 – Makinitez21 2010-01-03 10:13:55

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; 
    } 
}  

A C++大師解釋說我一旦這會爲您的變量提供一個上下文堆棧以供它們存在,而switch/case語句不會自動提供。請記住,如果您在該上下文中創建任何對象,請刪除/釋放對象,否則這是發生內存泄漏的簡單方法。

我個人總是在我的病例陳述中使用大括號,如果你問我;)你永遠不知道在將來你是否需要他們,這會讓事情變得更容易理解。

+0

謝謝你,幫助 – Makinitez21 2010-01-04 02:22:17

相關問題