2012-04-06 3 views
0

모든 클래스가 슈퍼 클래스에서 초기화 프로그램을 상속하므로이 메서드는 기본 구현 인 init을 지정된 이니셜 라이저에 연결 한 것입니다. (이 일하고있어.)슈퍼 클래스 초기화 메서드를 지정된 초기화 도구에 연결

링크 :

-(id)init { 
    return [self initWithItemName:@"Default Value" 
        valueInDollar:0 
        serialNumber:@""]; 
} 

이니셜 :

-(id)initWithItemName:(NSString *)myItemName 
     valueInDollar:(int)myValueInDollar 
     serialNumber:(NSString *)mySerialNumber; 

내 질문에, 나는 항상 내 자신의 이니셜 (링크) 내가 그런 식으로 연결해야합니까입니까? 그래서 아래 코드가 없으면 자신의 초기화 프로그램을 호출하지 않을 것입니까? 내가 맞습니까? 당신은 단지 initWithItemName 사용하여 객체를 초기화하는 경우

-(id)init { 
    return [self myInitMethod......"]; 
} 

답변

1

는, 당신은 모든 init 방법을 정의 할 필요가 없습니다. 이니셜 라이저는 일반적인 방법 일 뿐이므로 (마술과 관련 없음) 호출 할 내용을 호출합니다. 그러나 init 메서드를 구현하여 호출 할 수 있고 개체가 일관된 상태가되도록하는 것이 좋습니다.