Apple's docs에 지정된 초기화 프로그램의 일부 정보를 찾았지만 이해할 수없는 것은 각 클래스에 반드시 과 하나만 있습니다 지정된 초기화 프로그램이 있습니까? 예를 들어Objective-C 클래스에는 정확히 하나의 지정된 초기화 프로그램이 있어야합니까?
, 무엇 class B
class A
에서 상속하고 initX, initY, initZ
있는 동안 class A
는 initL, initM, initN
이있는 경우. initX
전화 번호 [super initL]
및 initY
전화 번호는 [super initM]
이고 initZ
전화 번호는 [super initN]
입니다. 우리가 3 차 초기화하고, 각각의 발신자를 가질 수 없습니다, 대신 모든 "보조 초기화 '의이다
는 지정 초기화를 호출하고 initFoo
는 슈퍼 클래스의 지정된 초기화 여기서 각 지정된 초기화는 [super initFoo]
를 호출합니다 상응하는 슈퍼 클래스의 3 가지 기본 초기화 프로그램? (이들 모두는 NSObject
에서 상속 받고 단지 self = [super init]
이라고 부릅니다.)
NSCell에는 [docs] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSCell_Class/Reference/NSCell)에 따라 네 개의 지정된 초기화 프로그램이 있습니다. html % 23 // apple_ref/doc/uid/TP40004017) :'init','initWithCoder :','initTextCell :','initImageCell :'. – Monolo
@Monolo :'initTextCell :'과'initImageCell :'아마도'[self init]'을 호출한다. –
동의하지만, 문서는 명시 적으로 이니셜 라이저로 명시한다. 나는 그것이 문서의 버그인지 항상 궁금해했다. – Monolo