iOS/Swift + Objective-c

[Objective-C] alloc, init 메서드

안경 쓴 귀니 2017. 2. 3. 18:05
반응형
ClassA* a = [ClassA alloc];


alloc은 allocate(할당하다)의 줄임말이다. 새로운 클래스에 메모리 공간을 할당하는 것이다. 클래스에 alloc 메세지를 보내, 그 클래스의 새로운 인스턴스를 받는다. alloc 메서드는 객체의 모든 인스턴스 변수를 0으로 초기화한다. 그러나 이것으로 객체가 사용하기에 충분히 초기화되었다고 볼 수는 없다. 따라서 객체를 생성(allocate, 메모리에 할당)한 후, 초기화(initialize)해 주어야 한다. 이것은 다음 명령문으로 수행할 수 있다.

a = [a init];


init 메서드는 클래스의 인스턴스를 초기화한다. a 변수에 init 메시지를 보내는 것에 주목하자. 이것은 클래스가 아니라 특정한 ClassA 객체를 초기화하는 것을 뜻한다. 초기화 메시지를 클래스의 인스턴스에게 보내는 것이다. 이 점을 명확히 이해해야 한다.
init 메서드는 초기화된 객체를 반환한다. 이 반환 값을 ClassA형의 변수인 a에 저장한다. 새 인스턴스를 생성하고, 생성된 객체를 초기화하는 이 연속적인 명령은 Objective-C에서 자주 사용되는데, 보통은 다음과 같이 결합하여 한 줄로 쓴다.

ClassA* a = [[ClassA alloc] init];


위의 코드는 새 ClassA 객체를 생성하고 그 후 초기화하는 것이다. 초기화한 결과가 a 변수에 할당된다.



[출처 : http://my-recipe.tistory.com/entry/Object-C-alloc-init-%EB%A9%94%EC%84%9C%EB%93%9C ]

반응형