본문 바로가기

Computer195

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.
Objective-C: Inheritance OOP에서 클리스와 객체간의 관계를 설명할때에 Inheritance 와 Composition 은 자주 등작하는 단어 이다. Inheritance는 부모 클래스의 특성과 함수들을 물려 받을수 있도록 해주어 코드의 재활용성을 높여주고 composition은 하나의 오브젝트가 다른 오브젝트의 Reference를 가지고 있는 경우이다. Inheritance는 기본적으로 부모의 특성을 물려 받는다. Tire와 Engine으로 구성된 Car 를 만든다고 해보자. 우선 Tire를 가지고 Inheritance를 설명한다. 1. Base Tire @interface Tire : NSObject { int RunTime; } -(void) Run: (int) x; -(void) printStatus; @end @imple.. 2009. 5. 24.
Objective-C: 클래스 선언 및 구현 - First Step Objective-C에서는 "interface"는 어떤 클래스의 특성들에 대한 기술을 의미한다. 그리고 "implementation"은 interface가 동작하도록 하게 하는 코드를 의미한다. Interface의 선언은 "@interface" 키워드를 통해서 선언하고 "@end" 키워드로 종료한다. @interface 키워드 다음에 { } 사이에 데이터를 선언하고 - 다음에 메소드를 선언한다. 예를 들어 Rectangle을 선언해 보자 @interface Rectangle : NSObject { int horizontal; int vertical; int area; } -(void) setHorizontal: (int) x; -(void) setVertical: (int) x; -(void) calAr.. 2009. 5. 17.