코코아에서, NSObject
s 일 때, 클래스 메소드가 init
과 initialize
일 수 있습니까?-init가 인스턴스 메소드이고 + 클래스 메소드를 초기화하는 이유는 무엇입니까?
0
A
답변
3
+initialize
은 클래스 전체 초기화를 수행 할 수 있습니다 (선택 사항 임). -init
은 클래스의 단일 인스턴스 초기화를 수행하지만 NSObject에서 파생 된 클래스 (예 : UIView의 initWithFrame:
메소드)에 인수를 추가하여 정의하는 경우가 많습니다.
-init
은 단일 인스턴스를 초기화하므로 (특히 인스턴스 변수에 액세스 할 수 있기 때문에) 클래스 메소드가 될 수 없습니다. 워드 프로세서
1
:
런타임은 클래스, 또는 상속하는 모든 클래스하기 전에 프로그램의 각 클래스에 초기화 전송, 프로그램 내에서 첫 번째 메시지가 전송됩니다.
이것은 alloc
또는 어떤 정의 된 클래스 메소드, initialize
처음이라고이든 처음이 응용 프로그램의 전체 실행에 대해 한 번, 클래스에 메시지를 보낼 수 있다는 것을 의미한다. load
과는 달리 프로젝트에 클래스를 포함 할 수 있으며 결코 initialize
을 누르지는 않습니다.
init
가 할당 된 후 즉시 새로운 메모리 오브젝트 (수신기)를 초기화하는 서브 클래스에 의해 구현된다.
의미 init
는 sheerly 클래스를 인스턴스를 초기화하는 데 사용됩니다.
편집 - init
가 alloc
클래스의 방법이며 init
인스턴스 방법입니다 이유입니다, 초기화하는 동안 편집 된 질문에 따라
, alloc
인스턴스를 생성합니다.