2010-02-06 3 views
0

하위 뷰 컨트롤러를 추가 할 루트 뷰 컨트롤러가 있습니다.NSmutable 배열은 subviewcontroller에서 null을 반환합니다. iphone objective C

Rootviewcontroller : moviewController.listNSMutableArray의 유일한 구성원으로 사전의 값을 추가하려고합니다. 그 추가 안한다과 NSlog 내가 목록을 작성 subviewcontroller에서 "list: (null)"

for (id key in dictionary) { 

    MovieController *movieController = [[MovieController alloc] initWithStyle:UITableViewStylePlain]; 
    movieController.title = key; 


    [movieController.list addObject:[dictionary objectForKey:key]]; 
    NSLog(@"list: %@",[movieController.list count]); //<<<< 


    [array addObject:movieController]; 
    [movieController release]; 
} 

(MovieController가)와 같은 테이블에있는 항목을 표시하는 데 사용 이잖아 내게 말하고 그러나 :

- (void)viewDidLoad { 


    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    self.list = array; 

    [array release]; 
    [super viewDidLoad]; 
} 

왜 내가 rootviewcontroller에 객체를 추가 할 수 없습니까? MovieController에 표시 할 목록을 가져올 수있는 유일한 방법은 인스턴스화시 initWithObjects입니다. 당신이 %@으로 포맷해서는 안됩니다 있도록

감사

Sapatos는

답변

0

-count는 정수가 아닌 ObjC 개체를 반환합니다. 대신 %d를 사용하여 당신은 -viewDidLoad 방법에 목록 속성을 초기화되지만 뷰가로드 될 때까지이 메소드가 호출되지 않습니다

NSLog(@"list: %d",[movieController.list count]); //<<<< 
0

. -viewDidLoad 메서드가 호출되지 않기 때문에, 목록

[movieController.list addObject:[dictionary objectForKey:key]]; 

나는 당신이 초기화에 목록 속성을 초기화하지 않고 목록입니다 있도록 제안, 다음과 같이 객체를 추가 할 때 초기화되지 않은 남아 객체를 추가 할 때 초기화됩니다.

관련 문제