티스토리 뷰

클래스에 초기화 메소드를 만들어야 한다는 요구사항은 없다.
하지만 클래스에 따라서는 편의를 위해 여러개의 이니셜라이저를 제공하기도 한다.

-많은 인수를 하나하나 모두 전달해야 하는 경우.
-기본적인 값을 사용해서 간단하게 초기화하는 경우.
-초기화를 위해 데이터를 메모리에서 읽어 들이는 경우.
-파일에서 읽어들이는 경우.
등등...

여러 종류의 이니셜라이저 중에서도 인스턴스를 초기화하기 위해 반드시 실행되어야 하는 메소드를
지정된 이니셜라이저 (designated initializer) 라고 한다.

#import <stdio.h>
#import <objc/Object.h>

@interface Point : Object
{
     int x, y;
}

- (id) init;
- (id) initWithPoint : (int) x int : (int) y;
- (int) getX;
- (int) getY;
@end

@implementation Point
- (id) init {
    [super init];
    return [self initWithPoint : 0 int : 0];
}

- (id) initWithPoint : (int) x int : (int) y {
    self->x = x;
    self->y = y;
    return self;
}

- (int) getX { return x;}
- (int) getY { return y;}
@end

위 코드의 Point 클래스에서는, 지정 initialize 로 initWithPoint 메소드를 정의하고 있다.
initWithPoint는 자동적으로 호출되는 메소드는 아니기 때문에, 명시적으로 호출해야 한다.
통상적으로 init 메소드나 지정 initialize는, 가장 인수를 많이 받는 initialize를 차례차례 호출하는 형태가 가장 안정된 설계이다.

'나름 프로그래밍? > Objective-C' 카테고리의 다른 글

@property  (0) 2010.02.08
클래스 메소드  (0) 2010.02.05
객체의 초기화  (0) 2010.02.05
성능을 위한 C 스타일 고수  (0) 2010.02.04
단축키  (0) 2010.02.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함