2010-12-21 13 views
1

내 UITabBarController가 관리하는 컨트롤러를 반복하고 UINavigationControllers가 포함 된 탭에 대해 현재 탐색 스택에있는 viewController 수를 확인합니다. 컨트롤러가 UINavigationControllers 주장하고, 자신의 viewControllers 속성은 배열로 표시되는 동안 불행하게도, 내가 예상대로 "계산"에 응답하지 않습니다viewController 수를 가져올 수 없습니다.

for (UIViewController *controller in tabBarController.viewControllers) { 
    if ([controller isKindOfClass:[UINavigationController class]]) { 
     UINavigationController *navigationController = (UINavigationController*)controller; 
     NSLog(@"Analyzing controller: %@", controller.title); 
     NSLog(@"Views in hierarchy: %@", [navigationController.viewControllers count]); 
    } else { 
       .... 
      } 
    } 

을 나는 상에 EXC_BAD_ACCESS 오류가 발생 " Views in hierarchy : "행 수를 navigationController.viewControllers로 보내려고 할 때의 줄.

나는 여기에서 당황하고 누구든지 제공 할 수있는 도움을 원할 것입니다. 미리 감사드립니다!

답변

4

형식 지정자를 사용하여 -count의 결과를 인쇄하는 경우 NSUInteger을 반환합니다. %@은 개체를 인쇄 할 때만 적합하므로 정수로만 제공하는 경우에도 개체를 기대하게됩니다. 대신 다음과 같이해야합니다.

NSLog(@"Views in hierarchy: %lu", 
    (unsigned long)[navigationController.viewControllers count]); 
+0

왜 캐스트를 부호없는 long으로 설정해야합니까? count는 이미 NSUInteger를 반환하는데, iPhone에서는 부호없는 long입니다. – Guillaume

+0

@Guillaume 구현 세부 사항입니다. 다른 유형이 된 경우 더 이상 '% lu'형식 지정자와 일치하지 않습니다. –

+0

아, 맞습니다. 나는이 물건을 너무 오래 꼼짝 않고 바라 보았다. 고맙습니다! –

관련 문제