2010-08-10 8 views
0

다음 유틸리티 메서드가 선언되어 있습니다. "players"는 NSMutableArray 객체이고 내 응용 프로그램의 View Controller 속성입니다. 내 문제는이 메서드가 호출 된 후 "플레이어"여전히 개체가 0입니다.함수 결과가 no가 될 NSMutableArray에 항목 추가

-(void)addPlayerNamed:(NSString *)name withLife:(NSNumber *)life{ 
    NSMutableDictionary *newPlayer = [NSMutableDictionary dictionaryWithCapacity:1]; 
    [newPlayer setObject:life forKey:name]; 
    [players addObject:newPlayer]; 
} 

답변

2

플레이어를 설정 했습니까? 이것을 사용하기 전에 이것을 호출해야합니다. 아마도 이니셜 라이저에있을 것입니다. 플레이어가 속성 인 경우

players=[[NSMutableArray alloc] init]; 

, 당신은 아마도 (후자는 여전히 작동하지만)

+1

'players' 만약 대신

players 

self.players 

를 사용하려면 'retain' 속성을 가진 속성이라면,'autorelease'를 사용하거나'NSMutableArray array '라는 편리한 메소드를 사용하지 않으면 누출 될 것입니다. – dreamlax

+1

더 자세하게 설명하자면, 배열을 생성하고 포인터를'players' 인스턴스 변수에 저장해야합니다. 당신이 할 때까지, 변수는'nil'을 포함합니다. 객체에 대한 포인터는 없습니다. 펜촉에서 코드를로드하는 경우 코드에서 뷰를 만들 필요가 없습니다. IB에서 콘센트를 연결하는 동안 펜촉을 올리면 콘센트 변수가 설정됩니다. 이 경우, (불가능한) 펜촉에서 배열을로드하지 않으므로, 코드에서 코드를 만들어야합니다. (나는 이것을 언급한다. 왜냐하면 어떤 사람들은 이것을 놓치고 여분의 물체를 만든다. 그리고 나서 알 수없는 것처럼 펜촉에서 물체를 잡아 당기기 때문이다.) –

2

모든 가능성, players은 0입니다. nil에 대한 메시지는 0 또는 nil을 리턴합니다.

관련 문제