2012-11-07 2 views
0

내 프로그램에 클래스가 있고 해당 클래스에 +initialize 메소드가 있습니다. 나는 그 방법을 누가 부르는 지 궁금하다. 디버깅 도구는 매우 불분명 : +initialize을 트리거 무엇 언제 누가 + 초기화를 호출 했습니까?

enter image description here

를 호출 할? 응용 프로그램 시작의 시작?

+0

코드를 처음 사용할 때 게시하십시오. –

+2

사실, 디버깅 도구는 누가이를 호출했는지 정확하게 알려줍니다 : _class_initialize(). 스택 추적은 확장되지 않으므로 궁극적으로 누가 * *를 호출했는지 알 수 없습니다. Xcode 창의 왼쪽 하단에있는 슬라이더로 스택 트레이스를 확장하십시오. –

답변

5

런타임은 프로그램에서 각 클래스에 정확히 한 번만 또는 클래스에서 상속하는 모든 클래스에 프로그램의 첫 번째 메시지를 보냅니다.

+ (void)initialize에 대한 설명서를 NSObject에 표시하십시오. initialize 질문에 authoritative blog post

클래스가 처음 사용될 때 initialize 클래스 전의 문서 상태가 제 1 메시지를 전송로, 즉, 한 번 실행 중임.

+0

누가 첫 번째 메시지를 보냅니 까? 어떻게 추적합니까? –

+0

해당 클래스의 인스턴스를 생성하는 경우 지정된 초기화 프로그램에 중단 점을 배치하고 스택 추적을 볼 수 있습니다. 물론'init'을 오버라이드해야합니다. – FluffulousChimp

+0

나는 그것이 어디에서 왔는지 알아 냈다. 그러나 그림에서 스택 추적을보십시오. 말하지 않는 것이 많지 않습니다. –

관련 문제