2012-08-02 5 views
0

나는 내가 얻을 것으로 예상되는 개체를 얻지 못하는 for 루프를 가지고 있습니다.in 루프에 대해 잘못된 개체를 반환합니다.

나는 MainLayer이라는 CCLayer 클래스를 가지고 있는데 여기에는 클래스 MyUniqueClass의 하위 항목을 추가합니다. 그러나 모든 MyUniqueClass 개체를 얻으려고하면 다른 CCNode 개체도 얻을 수 있습니다. 여기에 내가 MainLayer에서 할 무엇을 다음 CCNode 객체가 왜

for (MyUniqueClass *mUC in self.children){ 

     NSLog(@"%@", mUC); //Here I get all kinds of objects 

} 

답변

4

봅니다 알아낼 수 있습니다. 어떻게 든 그들은 아이들로 추가되었습니다.

아니면 그냥 무시하고 다른 노드 클래스를 필터링하기 위해이 작업을 수행 :

Class uniqueClass = [MyUniqueClass class]; 
for (MyUniqueClass *mUC in self.children) 
{ 
    if ([mUC isKindOfClass:uniqueClass]) 
    { 
     NSLog(@"%@", mUC); 
    } 
} 
+0

그래, 거기에 의도적으로 CCNode 개체가 있습니다. for 루프는 모든 MyUniqueClass 객체를 제공한다고 생각했습니다. 그것이 나에게 모든 CCNode 객체를 주면 어떻게 사용합니까? for 루프를 사용하지 않고 자식을 반복하고'-isKindOfClass' 메서드를 사용할 수 있습니다. –

+0

for 반복문은 빠른 반복자입니다. 그게 다야. in에 대한 –

+0

은 self.children의 모든 객체를 반환합니다. 수신 포인터를 MyUniqueClass *로 캐스팅하면 가져 오는 객체가 변경되지 않습니다. – LearnCocos2D

2

당신은 MyUniqueClass *로 루프 변수를 입력하면 해당 클래스에 속하는 전용 커버 객체에 루프가 발생할 수 있다고 생각하는 것 같다. 그것은 얼마나 빠른 열거가 작동하지 않습니다. 그것은 형식 검사기와 전혀 상호 작용하지 않습니다. 루프 변수에 정적 유형을 지정하면 컴파일러가 루프 본문에서 수행하는 작업에 대해 유형 검사를 수행 할 수 있습니다 (예 : 실수로 텍스트보기와 같은 텍스트 필드를 사용하는 경우 경고 할 수 있음). 도트 구문을 사용하여 객체의 속성에 액세스합니다. 특정 클래스의 객체 만 조작하려면 루프 본문 as shown by LearnCocos2D에 명시 적으로 체크인해야합니다.

+0

감사합니다. 나는 그것을 몰랐습니다. –

관련 문제