컴포지 이란?
상속은 ~은 ~의 일종이다(is a )라는 관계
컴ㅍ지션은 ~은 ~을 가진다(has a)라는 관계
모든관계가 상속은 아니므로 자료구조를 만들 때 고민해 본다.
접근자 메소드
1. 오브젝트C에서는 set은 사용하지만 get이라는 명칭은 사용하지 않는다.
참조 횟수
1. 객체가 alloc 또는 new, copy 메시지를 통해 만들어지면
객체의 참조 횟수는 1이 된다.
2. 참조횟수를 증가시키려면 retain메시지를 보내고, 감소 시키려면 release 메시지를 보낸다.
3. 참조횟수가 0이 되어 객체가 소멸되려고 할 때 오프젝트C에서는 자동으로 dealloc메시지를
해당 객체에 보낸다.
- (id)retail;
-(void) release;
-(unsigned) retainCount;
* 참조 카운트 : 객체 스스로 참조 카운트를 저장.
stack(지역변수..) heap(객체를 저장하는 메모리 공간)
============= =======================
demo ---------------------------------> demo 객체(참조카운트 : 1)
x(10) demo 객체(참조 카운트 : 0) <--release일 때
============= ========================
DemoClass *demo = [DemoClass new];
int x = 10;
[demo release];
위에 소스 처럼 객체를 생성했으면 공간을 해제 해줘야 한다. 그래야 메모리 누수가 일어나지 않는다.
메모리 관리가 반자동이기 때문이다.
예제 소스
객체 초기화
1. 객체 생성 할 때 포인트 변수는 nil로 초기화 된다.
'Language > iPhone' 카테고리의 다른 글
제 4장. Objective C (6) | 2012.03.29 |
---|---|
제3장. Objective C[오전+오후] (0) | 2012.03.28 |
제 2장. Objective C (0) | 2012.03.27 |
(+)와 (-)함수의 차이는? (0) | 2012.03.26 |
제 1장. Objective C (0) | 2012.03.26 |