Objective-C11 Objective-C : Property Lists 1. Property list object Property list object는 (plist라고 약칭) 객체가 자신을 파일로 저장하고 이를 다시 복구할수 있는 메소드를 구현한 객체들을 말한다. 이런 클래스 종류로는 NSArray, NSDictionary, NSString, NSNumber, NSDate, NSData 와 이들의 mutable counterparts 가 있다면 mutable counterparts object들도 포함된다. 다음의 예는 NSArray를 Disk로 저장하고 다시 Restore 하는 예제이다. 코드에서 보면 writeToFile 과 이를 retoure하기 위한 arrayWithContentsOfFile 메소드가 보인다. /tmp/test.txt에는 다음과 같이 저장되어 있다... 2009. 6. 21. Objective-C : Formal Protocol "Formal Protocol" - Formal Protocol은 "a named list of methods" 이다 - @protocol 키워드를 이용하여 선언한다 @protocol - ( ) methods @end - 클래스 선언에서 adopting 한다 @interface ClassName @end - Java의 인터페이스와 동일하며 모든 정의된 함수들을 구현해야 한다. - Objective 2.0에서는 필수적으로 구현해야 되는 것과 그렇지 않은 것을 다음의 키워드로 분리 가능하다 @protocla SomeProtocol -(void) Some Function @optional -(void) Some Function2 -(void) Some Function3 @required -(void) Some.. 2009. 6. 19. Objective-C : Categories 2/2 Category의 활용에 대해서 좀더 자세히 알아보자 1) Category를 이용하여 Implementation을 분리하는 경우 일반적으로 interface 선언은 header 파일에, 구현은 .m 파일에 담는게 되며 @implementation 코드를 여러 .m 파일이 존재하게 할수는 없다. 예를 들어 AppKit 의 NSWindow의 경우에 수백가지의 메소드를 가지고 있다. 이이 대한 구현을 하나의 파일에 놓는 다는 것은 유지 보수 측면 및 관리 측면에서 좋은 방법은 아니다. 따라서 NSWindow는 여러 category로 분류되어 있으며 구현 파일 역시 분리 되어 있다. category를 이용한 구현 파일 분리는 다음의 예로 설명한다. 왼쪽은 본 예의 파일 구성이다. CategoryUse1.m에는 .. 2009. 6. 15. Objective-C : Categories 1/2 "Category"는 현존하는 클래스에 새로운 메소드를 추가하는 방법이다. Category는 다음과 같이 선언한다. @interface SomeObject (CategoryName) - Some method to add @end 이에 대한 구현은 @implementation SomeObject (CategoryName) - Method Implementation @end 가 된다. 예를 들어 NSString의 문자열 길이를 NSNumber 형식으로 리턴하는 코드를 생각해 보자. 다음의 코드로 처리가 가능하다. NSNumber *number; number = [NSNumber numberWithUnsignedInt: [string length]]; 이렇게 하지 말고 NSString에 lengthAsNSNu.. 2009. 6. 15. Objective-C : Property 1. Value-Property Objective-C에서는 instant variable에 대한 accessor를 자동으로 설정해주는 property 가 존재한다. 예를 들어 다음 코드를 보자 testObject는 in_variable1,2에 대한 accessor들이 정의되어있고 구현 되어 있다. accessor 정의를 다음과 같이 @property 키워드를 이용하여 간략화 할수 있다. 뿐만 아니라 구현에서도 @synthesize 키워드를 이용하여 @property 로 정의된 attribute에 대하여 accessor를 자동적으로 생성 가능하다. 다음은 이를 이용한 코드 이다. accessor는 dot notation으로 사용이 가능하다. 즉 main은 다음과 같이 변경 가능하다. %% 이는 Object.. 2009. 6. 6. Objective-C : Object Initialization 1. Object Initialization Object 생성을 위해서는 [SomeClass new] 를 이용하거나 [[SomeClass alloc] init] 을 사용한다. Cocoa에서는 new보다는 alloc -> init을 사용하기를 권장한다. [SomeClass alloc] 을 하게 되면 운영체제로 부터 그 object의 instance 변수들을 유지하기에 충분한 메모리를 할당 받는다. 메모리를 할당 받으며 0 으로 초기화 된다. (BOOL은 NO로, float, int는 0으로, pointer는 nil로) SomeClass *classPtr = [[SomeClass alloc] init]; 형태로 사용되며 다음과 같이 사용 되지 않는다 SomeClass *classPtr=[SomeClass a.. 2009. 6. 6. 이전 1 2 다음