이 메서드에서 .parent 속성이 얻는 목적과이 속성이 호출되는 "get [ClassNameHere]"메서드를 이해하려고합니다.이 Mtd의 목적은 무엇입니까?
-(HudLayer*) getHud
{
return (HudLayer*)[self.parent.parent.parent getChildByTag:kTagHudLayer];
}
이 메서드에서 .parent 속성이 얻는 목적과이 속성이 호출되는 "get [ClassNameHere]"메서드를 이해하려고합니다.이 Mtd의 목적은 무엇입니까?
-(HudLayer*) getHud
{
return (HudLayer*)[self.parent.parent.parent getChildByTag:kTagHudLayer];
}
여기에 표시된 방법으로는 세부 정보를 알 수 없습니다. 그러나 .parent는 현재 코코스 객체가 속한 코코스 부모, 스프라이트 또는 레이어를 자식으로 반환합니다. 본질적으로이 코드는 더 많은 자식과 더 많은 자식이있는 자식이있는 스프라이트 나 레이어가 있음을 보여줍니다. 이는 스트림 상위의 누가 큰 부모인지 알아 내고 해당 부모로부터 새 자식을 얻는 방법입니다 .
개인적으로는 나에게 꽤 슬프게 보입니다. 나는 결코 그런 식으로 코딩하지 않을 것이다. (부모님이 보시다시피) 읽기가 힘들고 부모 속성이 너무 많아서 버그가 생길 여지가 많습니다. 상위 부모가 체인을 올라가는 먼 손주들보다 필요로하는 것을한다면 그것은 현명 할 것입니다. 여기에 표시된대로 MVC 모델을 약간 분해합니다.
"개인적으로 ..."덧글에 +1. 엉뚱한 행동과 벌레를 모호하게하는 고속도로. – YvesLeBorg
서명 및 동의 # – LearnCocos2D
아마 클래스 HudLayer
따라서 세 가지 수준 등반, 등등 parent
속성 다른 HudLayer에 포인팅을 갖는, 같은 종류의 또 다른 목적을 가리키는 parent
속성이 있습니다. 그런 다음 메시지를 getChildByTag
으로 보냅니다.
주된 목적은 나쁜 프로그래밍 실천을 전하는 것이라고 말하고 싶습니다. "부모님의 부모님 부모님"은 노드 레이아웃에 대해 과감한 가정을하고 있습니다. 노드의 계층 구조를 변경하자마자 가정이 잘못 될 수 있으며이 간접 지정은 실패합니다. 이는 getHUD 함수가 아무런 이유없이 Nil을 자동으로 반환한다는 것을 의미합니다. – LearnCocos2D
그가 정확히 무엇을 말하고 있는지 설명해 주시겠습니까? 그가 return (HUDLayer *) 라고 말하면 부모 노드를 반환하기 위해 HUDLayer를 호출하는 것은 무엇을 의미합니까? 그 전체 구문은 정말 이상합니다. – GPP