내 프로그램에 클래스가 있고 해당 클래스에 +initialize
메소드가 있습니다. 나는 그 방법을 누가 부르는 지 궁금하다. 디버깅 도구는 매우 불분명 : +initialize
을 트리거 무엇 언제 누가 + 초기화를 호출 했습니까?
가
를 호출 할? 응용 프로그램 시작의 시작?내 프로그램에 클래스가 있고 해당 클래스에 +initialize
메소드가 있습니다. 나는 그 방법을 누가 부르는 지 궁금하다. 디버깅 도구는 매우 불분명 : +initialize
을 트리거 무엇 언제 누가 + 초기화를 호출 했습니까?
가
를 호출 할? 응용 프로그램 시작의 시작?런타임은 프로그램에서 각 클래스에 정확히 한 번만 또는 클래스에서 상속하는 모든 클래스에 프로그램의 첫 번째 메시지를 보냅니다.
+ (void)initialize
에 대한 설명서를 NSObject
에 표시하십시오. initialize
질문에 authoritative blog post
클래스가 처음 사용될 때 initialize
클래스 전의 문서 상태가 제 1 메시지를 전송로, 즉, 한 번 실행 중임.
누가 첫 번째 메시지를 보냅니 까? 어떻게 추적합니까? –
해당 클래스의 인스턴스를 생성하는 경우 지정된 초기화 프로그램에 중단 점을 배치하고 스택 추적을 볼 수 있습니다. 물론'init'을 오버라이드해야합니다. – FluffulousChimp
나는 그것이 어디에서 왔는지 알아 냈다. 그러나 그림에서 스택 추적을보십시오. 말하지 않는 것이 많지 않습니다. –
코드를 처음 사용할 때 게시하십시오. –
사실, 디버깅 도구는 누가이를 호출했는지 정확하게 알려줍니다 : _class_initialize(). 스택 추적은 확장되지 않으므로 궁극적으로 누가 * *를 호출했는지 알 수 없습니다. Xcode 창의 왼쪽 하단에있는 슬라이더로 스택 트레이스를 확장하십시오. –