2013-08-06 2 views
2

저는 최근에 코코아 기반의 오픈 소스 프로젝트를 연구했습니다. 많은 프로그램이 awakeFromNib에서 코드를 초기화하고 지정된 초기화 프로그램을 거의 사용하지 않는 것을 보았습니다. 재정의 지정된 초기화에서목표 C : init 및 awakeFromNib

  • : 나는 그런 식으로 작업을 수행하는 데 사용하고로 awakeFromNib에서 모든 비 펜촉 물건
  • 을 모든 펜촉 관련 물건

이 방법이 잘못되어 있습니까?

답변

1

예, 모든 펜촉 관련 항목은 awakeFromNib 메소드에서 수행해야합니다. 그것이 호출 될 때 당신은 이미 펜으로 초기화되고로드 된 뷰를 가지므로 이미 그것을 구성하고 사용할 수 있습니다. 초기화에 관해서는 관심을

,이 질문을 확인하십시오 : iOS: UIView subclass init or initWithFrame:?

지정 초기화는 다른 모든 초기화가 호출해야 하나입니다. UIView 및 하위 클래스는보기가 생성되는 방식에 따라 실제로는 두 개의 초기화 프로그램 인 -initWithFrame : 및 -initWithCoder :가 있다는 점에서 약간 이상합니다. 코드에서보기를 인스턴스화하는 경우 -initWithFrame을 오버라이드해야하며 펜촉에서로드하는 경우 -initWithCoder :를 재정의해야합니다. 또는 코드를 세 번째 메서드에 넣고 두 번째 이니셜 라이저를 재정 의하여 세 번째 메서드를 호출 할 수 있습니다. 실제로 이것은 종종 권장되는 전략입니다.

+0

실제로 기술적 인 세부 사항을 묻는 질문이 아니 었습니다. 내 질문은 다음과 같습니다. 이 방법이 잘못 되었습니까? – Eliott

+0

여기서 문제는 설명없이 대답이 "예"라고 생각했기 때문입니까? Ok –

+0

그러나 Mac OS X 및 NSView 클래스에서는 항상 initWithFrame이 호출되는 것은 아닙니다. 기술 세부 정보는 http://stackoverflow.com/questions/5374076/nsview-initialization-init-vs-awakefromnib에서 확인할 수 있습니다. –