본문 바로가기

Objective-C11

Objective-C : Memory Management - The Rules of Cocoa MM * new, alloc, copy 등을 이용하여 오브젝트를 생성할때 생성된 오브젝트의 retain count는 1이며, 오브젝트가 다 사용되었으면 release 나 autorelease를 보내어 clean up 을 해야 한다. * 다른 메카니즘을 통해서 객체를 소유하고 있는 경우 (retain이 1 이고 autorelease 된 경우) clean up에 대해서 신경쓸 필요는 없다. 만약 특정 기간동안에 해당 객체를 사용하고 싶으면 retain 하고 사용후 release 하면 된다. * 객체를 retain을 했으면 release 하거나 autorelease 해야 한다. 다음의 두 코드를 비교해 보자 1. 명시적 release가 필요한 경우 NSMutableArray *array; array=[[NSMuta.. 2009. 6. 2.
Objective-C : Memory Management 2 - AutoRelease 다음과 같이 description 이 정의된 객체에서 -(NSString *) description { NSString *description; description=[[NSString alloc] initWithFormat: @"I am %d years old",4]; return (description); } 이 함수를 main 또는 owner 객체에서 이용할 경우 description의 memory leak을 방지하려면 다음과 같은 코드를 작성해야 하기 때문에 불편한다. NSString *desc = [someObject description]; NSLog(@"%@",desc); [desc release]; 코코아에서는 autorelease pool이라는게 존재한다. NSObject는 다음의 메소드.. 2009. 6. 2.
Objective-C : Memory Management 1 - Base 1. Reference Counting Cocoa는 reference counting이라는 것을 이용하여 Object 대한 Reference 여부를 판단한다. 이를 retain counting이라고도 한다. Object가 alloc 또는 new 또는 copy message등을 이용하여 생성될때 retain count는 1로 설정 된다. Object에서 사용하는 메모리를 Release 하기 위하여 dealloc method를 override하여 사용하면 된다. retain count 관련하여 다음과 같은 함수들이 있다. -(id) retain; // retainCount를 증가 시킨다. -(void) release; //retainCount를 감소 시킨다. retainCount가 1일때 불리면 deallo.. 2009. 6. 1.
Objective-C : 소스 파일 분리 앞에서 보았던 소스코드는 하나의 파일에 담겨졌으나 각 클래스에 따라서 각각 다른 파일로 분리가 가능하며 소스 코드의 양이 많아 질 경우 클래스별로 분리하는게 효율적이다. @interface 선언문은 *.h 파일에 담고, @implementation 의 구현문은 *.m 에 담는다. 예를 들어 앞의 예에서 Engine 은 @interface 선언문은 Engine.h 에, @implementation 구현문은 Engine.m에 넣는다. 단 Engine.m의 첫 라인에 #import "Engine.h" 라는 구문이 필요하다. 앞의 예제의 Car를 선언파일과 구현 파일로 분리한다고 하였을때 Car.h 의 경우는 @interface 선언문에 #import #import "Engine.h" #import "Tire... 2009. 5. 26.
Objective-C: Composition Composition은 Object에서 다른 Object의 Reference를 가지고 있는 경우로 이를 접근하기 위한 accessor method와 Object를 설정하기 위한 setter method 그리고 상태를 변경하기 위한 mutator method들이 존재 한다. 이전 예에 다음의 코드를 포함해서 Engine과 Car를 만들어 보자 1. Engine 2. Car Car는 engine 객체와 4개의 tire 객체에 대한 참조를 가지고 이에 대한 accessor로 engine method를 가지고 있으며 engine에 대한 settor로 setEngine method를 가진다. tire에 대한 setter로 setTire method를 가지고 engine의 상태를 변경하기 위한 mutator로 ri.. 2009. 5. 25.