2012-04-04 5 views
0

이 메서드에서 .parent 속성이 얻는 목적과이 속성이 호출되는 "get [ClassNameHere]"메서드를 이해하려고합니다.이 Mtd의 목적은 무엇입니까?

-(HudLayer*) getHud 
{ 
return (HudLayer*)[self.parent.parent.parent getChildByTag:kTagHudLayer]; 
} 
+0

주된 목적은 나쁜 프로그래밍 실천을 전하는 것이라고 말하고 싶습니다. "부모님의 부모님 부모님"은 노드 레이아웃에 대해 과감한 가정을하고 있습니다. 노드의 계층 구조를 변경하자마자 가정이 잘못 될 수 있으며이 간접 지정은 실패합니다. 이는 getHUD 함수가 아무런 이유없이 Nil을 자동으로 반환한다는 것을 의미합니다. – LearnCocos2D

+0

그가 정확히 무엇을 말하고 있는지 설명해 주시겠습니까? 그가 return (HUDLayer *) 라고 말하면 부모 노드를 반환하기 위해 HUDLayer를 호출하는 것은 무엇을 의미합니까? 그 전체 구문은 정말 이상합니다. – GPP

답변

2

여기에 표시된 방법으로는 세부 정보를 알 수 없습니다. 그러나 .parent는 현재 코코스 객체가 속한 코코스 부모, 스프라이트 또는 레이어를 자식으로 반환합니다. 본질적으로이 코드는 더 많은 자식과 더 많은 자식이있는 자식이있는 스프라이트 나 레이어가 있음을 보여줍니다. 이는 스트림 상위의 누가 큰 부모인지 알아 내고 해당 부모로부터 새 자식을 얻는 방법입니다 .

개인적으로는 나에게 꽤 슬프게 보입니다. 나는 결코 그런 식으로 코딩하지 않을 것이다. (부모님이 보시다시피) 읽기가 힘들고 부모 속성이 너무 많아서 버그가 생길 여지가 많습니다. 상위 부모가 체인을 올라가는 먼 손주들보다 필요로하는 것을한다면 그것은 현명 할 것입니다. 여기에 표시된대로 MVC 모델을 약간 분해합니다.

+1

"개인적으로 ..."덧글에 +1. 엉뚱한 행동과 벌레를 모호하게하는 고속도로. – YvesLeBorg

+0

서명 및 동의 # – LearnCocos2D

1

아마 클래스 HudLayer 따라서 세 가지 수준 등반, 등등 parent 속성 다른 HudLayer에 포인팅을 갖는, 같은 종류의 또 다른 목적을 가리키는 parent 속성이 있습니다. 그런 다음 메시지를 getChildByTag으로 보냅니다.

관련 문제