상세 컨텐츠

본문 제목

[Objective-C] 클래스의 메소드 파악하기 + 메소드의 표기

헉!!/Objective C

by 권태성 2012. 1. 8. 21:43

본문


클래스에 준비되어 있는 메소드 파악하기
──────────────────────────────
인스턴스를 생성하면 그 클래스에 준비되어 있는 다양한 메소드를 이용할 수 있습니다. 물론 그렇게 하기 위해서는 클래스에 어떤 메소드가 준비되어 있는지를 알아 둘 필요가 있습니다. 이 때 활약하는 것이 온라인 매뉴얼입니다. 온라인 매뉴얼은 Xcode의 [help] 메뉴에서 [Developer Documentation]을 선택하면 표시됩니다. 오른쪽 위에 있는 [Search] 필드에 키워드를 입력해 도큐멘트를 검색할 수 있습니다.

지금부터 나오는 설명은 Xcode3을 예로 설명합니다.

온라인 매뉴얼의 툴 바에 있는 [Home] 메뉴에서 [Mac OS X 10.6 Core Library]를 선택하여 [Core Reference Library]를 표시하고, 왼쪽 리스트에서 카테고리를 선택할 수도 있습니다. 예를 들어 Foundation 프레임워크에 관한 정보를 조사하고 싶은 경우에는 [Frameworks] - [Core Services Layer] - [Foundation]을 선택합니다.  이렇게 하면 Foundation 클래스에 관한 도큐멘트의 목록이 표시됩니다.

 
[Documents] 옆의 텍스트 필드에 키워드를 입력하여 목록의 범위를 좁힐 수 있습니다.

이를 이용해  NSDate 클래스의 레퍼런스를 살펴보겠습니다.


또 클래스 레퍼런스에는 [Tasks] 항목에 준비되어 있는 메소드의 리스트가 표시됩니다. '+'로 표시된것이 클래스 메소드, '-'로 표시된 것이 인스턴스 메소드 입니다.

 
메소드를 클릭하면 메소드의 상세 정보가 표시됩니다.

메소드의 표기에 대해서
이번에는 NSDate 클래스의 메소드를 예로 메소드의 표기에 대해서 설명해 보겠습니다. 예를들어 인스턴스를 초기화하는 init 메소드는 다음과 같이 정의되어 있습니다. 

메소드의 표기
- (id) init
// - 는 인스턴스 메소드
// (id )는 반환값 형식
// init은 메소드 이름 
 
맨 처음의 기호는 메소드의 종류를 나타냅니다. '-'가 인스턴스 메소드라는 것을 나타내고 있으며, 그 뒤로 반환값의 형식과 메소드 이름이 옵니다.
다음은 인수를 1개 가지는 'dateByAddingTimeInterval:' 메소드입니다.

- (id) dateByAddingTimeInterval: (NSTimeinterval) seconds
// (NSTimeinterval) 은 인수의 형식
// seconds는 인수 
 
이 경우 콜론 ':' 뒤에 인수의 형식과 인수가 옵니다.
다음 예는 인수가 2개인 'initWithTimeInterval:sinceDate:' 메소드입니다.
이 경우는 스페이스를 삽입하고, 라벨, 콜론 ':', 인수의 형식, 인수가 옵니다. 

- (id) initWithTimeInterval: (NSTimeinterval) seconds sinceDate: (NSDate *) refDate
// sinceDate:는 라벨
// (NSDate *)는 인수의 형식
// refDate는 인수 
 
클래스 메소드의 경우에는 맨 앞이 '+'가 됩니다.

+ (id) dateWithString: (NSString *) aString
//+가 클래스 메소드임을 표시해줌
 
 인수의 형식이 (NSString *)으로 되어 있는 점에 주의하세요. 인수가 객체인 경우에는 클래스 이름 다음에 '*'를 기술하빈다. 이런 식의 메소드 표기는 다른 언어에 익숙한 분에게는 좀 생소할지 모르지만, 메소드를 보는 것만으로 인수의 역할을 파악하기 쉬운 뛰어난 기법이라고 할 수 있습니다. 우선은 레퍼런스를 자주 보고 가능한 익숙해져야 합니다.




 





   

관련글 더보기