반응형
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 ]
반응형
'iOS > Swift + Objective-c' 카테고리의 다른 글
[Objective-c] @synthesize 사용 안해도 돼요 (0) | 2017.03.20 |
---|---|
[ios] cocoapod 사용하기 (0) | 2017.02.13 |
[ios] NavigationController 뒤로가기 버튼 기능 코드로 사용하기 (0) | 2017.02.13 |
[ios]뷰 컨트롤러 추가 (0) | 2017.02.03 |
[ios objective-c] 문자열 배열로 분리하기 (0) | 2017.02.01 |