2012-01-29 2 views
2

새내기 (C, objective-C 및 iOS) ...갓 초기화 된 배열이 비어 있습니다 - 왜?

내 AppDelegate.m의이 코드는 왜 새로 초기화 된 배열이 비어 있습니까? 내가 어떤 가치관을주는 것처럼 보입니다. Clue1 등은 일련의 UILabels이며 Xcode에서 언급 된 문제는 없습니다. 나는 그걸 꽤 많이 겪어 왔고 이것이 이것을하는 길일 것 같다. Xcode 4.2. 감사!

- (id)init {  
    self = [super init]; 
    if(self) {   
     // Make arrays containing the objects: this is the objective-C way! 
     self.clueLabs = [[NSMutableArray alloc] initWithObjects: Clue1, Clue2, Clue3, nil]; 
    } 
    NSLog(@"%@", [clueLabs description]); 
    if (!clueLabs || ![clueLabs count]) { // these 2 do m/l the same thing 
     NSLog(@"clueLabs is empty!"); 
    }  
    return self; 
} 
+0

ARC를 사용하고 있습니까? 그렇지 않다면 clueLabs는 보존 된 속성입니까? 그렇다면, 당신은 그것을 지키고 있습니다. – Till

+0

예, ARC가 켜져 있습니다. 헤더 파일에 "IBOutlet UILabel * Clue1;"이 포함되어 있습니다. 와 '@property (strong) UILabel * Clue1'각 단서에 대해 –

답변

3

Clue1, Clue2 Clue3이 nils가 아닌지 확인하십시오.

+0

아, 그럴 수도 있습니다. 나는 그들을 선언하지만 그들에게 어떤 가치도주지 말라. 고마워, 나는 그것을 시험해 볼 것이다. 바보 나. –

+0

배열을 할당하고 초기화하지 않고 nil 객체로 초기화 한 다음 루프의 일부 값으로 설정하거나 개별적으로 UILabels를 nil이 아닌 값으로 초기화해야합니까? 첫 번째 옵션은 훨씬 짧은 코드! 편집 : 어쩌면 루프 접근 가능하지 않습니다/c 개수가 0이고 그것을 채우기 위해 빈 배열을 반복 할 수 없습니다 ... –

+0

* initWithObjects * 메서드를 사용하여 배열을 초기화 할 때 - 그들은 nil 않을 수 있습니다. 비어있는 NSMutableArray를 만들고 나중에 객체로 채울 수 있습니다. –

관련 문제