티스토리 뷰
새로운 객체를 만드는 방법은
[someClass new], [[someClass alloc] init] 같은 형식이 있다.
두 방법 모두 객체를 생성해 주는 것은 동일하지만
alloc과 init을 쓰는 것을 권장한다.
객체를 할당하고 초기화 했을때 비로소 객체의 초기화가 완성된다.
Car *car = [Car alloc]; 은 에러없이 동작하겠지만 초기화를 하지 않았기 때문에
버그를 발생시킬 수 있다.
메모리 할당의 중요성에 상응하는 것이 초기화
객체를 할당하고 초기화 하는 방식.
Car *car = [[Car alloc] init];
이런식으로 alloc한 후 반환된 객체에 바로 연결해서 init 메소드를 보내는 방식은
매우 중요하다.
다음의 방식은 피하는게 좋다.
Car *car = [Car alloc];
[car init];
이렇게 할 시 초기화 메소드가 할당했던 객체와는 다른 객체를 반환할 수도 있다.
NSArray 를 할당 했는데 실제로는 NSCFArray가 할당 될 수도 있다.
[someClass new], [[someClass alloc] init] 같은 형식이 있다.
두 방법 모두 객체를 생성해 주는 것은 동일하지만
alloc과 init을 쓰는 것을 권장한다.
객체를 할당하고 초기화 했을때 비로소 객체의 초기화가 완성된다.
Car *car = [Car alloc]; 은 에러없이 동작하겠지만 초기화를 하지 않았기 때문에
버그를 발생시킬 수 있다.
메모리 할당의 중요성에 상응하는 것이 초기화
객체를 할당하고 초기화 하는 방식.
Car *car = [[Car alloc] init];
이런식으로 alloc한 후 반환된 객체에 바로 연결해서 init 메소드를 보내는 방식은
매우 중요하다.
다음의 방식은 피하는게 좋다.
Car *car = [Car alloc];
[car init];
이렇게 할 시 초기화 메소드가 할당했던 객체와는 다른 객체를 반환할 수도 있다.
NSArray 를 할당 했는데 실제로는 NSCFArray가 할당 될 수도 있다.
'나름 프로그래밍? > Objective-C' 카테고리의 다른 글
클래스 메소드 (0) | 2010.02.05 |
---|---|
지정된 이니셜라이저 (designated initializer) (0) | 2010.02.05 |
성능을 위한 C 스타일 고수 (0) | 2010.02.04 |
단축키 (0) | 2010.02.04 |
코드 폴딩 (0) | 2010.02.04 |