만일 클래스가 초기화 메서드를 하나 이상 갖는다면, 그 가운데 하나는 '지정된 초기화 메서드'여야 하고, 다른 메서드는 모두 이 초기화 메서드를 사용해야 한다. 지정된 초기화 메서드는 대개 가장 복잡한 초기화 메서드, 즉 가장 많은 인수를 받는 메서드다.

상속받은 인스턴스 변수를 적절히 초기화해 주어야 한다. 가장 쉽게는 먼저 모의 지정된 초기화 메서드(보통 init이다)를 호출해 주는 방법이 있다. 그 후 새로 정의한 인스턴스 변수를 초기화해 주면 된다.

이러한 내용을 바탕으로 보건대, Fraction 클래스의 초기화 메서드 initWith::는 다음과 비슷한 형태일 것이다.

-(Fraction *) initWith: (int) n: (int) d
{
     self = [super init];
     if(self)
          [self setTo: n over: d];
     return self;
}

이 메서드는 부모의 초기화 메서드인 NSObject의 init 메서드를 먼저 호출한다. (NSObject가 Fraction의 부모임을 기억하라). 초기화 메서드는 메모리 상의 객체를 바꾸거나 이동시킬 권한이 있기 때문에, 반환값을 self에 할당해 주어야 한다. super를 초기화한 후에(그리고 반환 값이 0이 아니어서 초기화가 성공한 경우) setTo:over: 메서드를 사용하여 Fraction의 분자와 분모를 설정해 준다. 다른 초기화 메서드와 마찬가지로, 초기화된 객체를 반환해 주어야 한다.
저작자 표시
신고

'Study > Objective-C' 카테고리의 다른 글

[Objective C: const 키워드]  (0) 2010.07.17
[Objective C: 접근 제한자]  (0) 2010.07.17
[Objective C: 초기화 메서드]  (0) 2010.07.17
[Objective C: 예외처리]  (0) 2010.07.17
[Objective C: 동적바인딩과 id형]  (0) 2010.07.17
[Objective C: @class 지시어]  (0) 2010.07.16
Trackback 1 | Comment 0

강군v's Blog is powered by Daum & tistory

 

티스토리 툴바