나는 cocos2d와 Objective C에 완전히 익숙하다. 나는 cocos2d 패키지와 함께 제공되는 HelloWorld 예제를 공부하기 시작했으며, HelloWorldScene.m 내의 -init() 함수가 어디에서 호출되는지 알 수 없었다. 사전에 http://www.bit-101.com/blog/?p=2123cocos2d 장면 질문 - init()은 앱에서 어디에서 호출됩니까?
감사 :
는 여기에 내가 다음 있던 튜토리얼입니다!
나는 cocos2d와 Objective C에 완전히 익숙하다. 나는 cocos2d 패키지와 함께 제공되는 HelloWorld 예제를 공부하기 시작했으며, HelloWorldScene.m 내의 -init() 함수가 어디에서 호출되는지 알 수 없었다. 사전에 http://www.bit-101.com/blog/?p=2123cocos2d 장면 질문 - init()은 앱에서 어디에서 호출됩니까?
감사 :
는 여기에 내가 다음 있던 튜토리얼입니다!
init() 메서드가 장면에서 재정의됩니다. 장면 인스턴스가 생성 될 때 기본 클래스 내에서 호출됩니다. 이를 오버라이드하여 자신의 코드를 실행할 기회를 얻습니다.
jtalarico가 정확합니다. 나는 그의 대답을 약간 확장하고 싶다.
일반적으로 [init]의 일부 형식은 객체가 인스턴스화 될 때마다 규칙에 따라 호출됩니다. 많은 객체의 경우 [init] 만 있으면되지만 필요한 객체는 [initWithSomething]과 같이 더 복잡한 형태입니다.
Cocos2d에서 init 함수는 일반적으로 Cocos2d에서 객체를 생성하는 데 자주 사용되는 [node] 메소드에 의해 호출됩니다. 예를 들어, CCNode.m 보면, 당신은이 코드를 볼 수 있습니다 :
+(id) node
{
return [[[self alloc] init] autorelease];
}
다른 목적이 다른 생성자를 가지고,하지만이 주요 예입니다.
그래서 CCNode의 하위 클래스를 만들면 [init] 메소드를 무시하고 객체를 만들 때 자신의 작업을 수행 할 수 있습니다. CCNode가 자체 초기화를 할 수 있도록 [super init]을 호출해야합니다.
cc, 답장을 보내 주셔서 감사합니다. 이것은 모든 것을 설명합니다. – pwang