먼저 다음과 같은 메소드가 있다.
- - (void)drawImage:(NSImage *)image withFrame:(NSRect)frame inView:(NSView *)view
- {
- NSSize size = [image size];
- NSRect rect = NSMakeRect(0, 0, size.width, size.height);
- [view lockFocus];
- [image drawInRect:frame fromRect:rect operation:NSCompositeCopy fraction:1.0];
- [view unlockFocus];
- }
- (void)drawImage:(NSImage *)image withFrame:(NSRect)frame inView:(NSView *)view { NSSize size = [image size]; NSRect rect = NSMakeRect(0, 0, size.width, size.height); [view lockFocus]; [image drawInRect:frame fromRect:rect operation:NSCompositeCopy fraction:1.0]; [view unlockFocus]; }
"메소드"란 위의 소스 그 자체라 말할 수 있다. 즉, 메소드 이름, 인자 갯수, 각 인자들의 데이터타입, 리턴값의 데이터타입,
그리고 그 내용으로 구성된다. 위의 소스는 이 모든 것들을 모두 표현하고 있다.
그럼, 이 메소드의 구성 요소들을 용어로 정리해 보자.
설명 | 예제 값 | |
selector | 메소드의 이름 | drawImage:withFrame:inView: |
method signature (type encoding) | 인자들 및 리턴값의 타입정보 | v@:{_NSRect={_NSPoint=ff}{_NSSize=ff}}@ |
implementation | 실행코드 | 함수 포인터 |
자, 이제 이 메소드를 다음과 같이 호출해 보자.
- [myCell drawImage:myImage withFrame:NSMakeRect(0, 0, 32, 32) inView:myView];
[myCell drawImage:myImage withFrame:NSMakeRect(0, 0, 32, 32) inView:myView];
이렇게 메소드를 호출하는 것을 Objective-C에서는 "메세지를 보낸다(send message)"라고 한다.
메세지는 다음과 같은 네가지로 구성된다.
설명 | 예제 값 | |
receiver | 메세지를 받는 객체 | myCell |
selector | 호출될 메소드의 이름 | drawImage:withFrame:inView: |
arguments | 호출시 넘어가는 인자들 | myImage, NSMakeRect(0, 0, 32, 32), myView |
return value | 호출후 넘어오는 값 | void |
Objective-C 런타임 및 Cocoa 프레임워크에서는 위의 용어들을 다음과 같이 추상화해 놓았다.
Objective-C Runtime | Cocoa Framework | |
selector | SEL, @selector() | SEL, @selector() |
method signature (type encoding) | const char * | NSMethodSignature |
implementation | IMP | IMP |
send message | objc_msgSend() | NSInvocation, [NSObject performSelector:withObject:] |
'개발 > App Developer' 카테고리의 다른 글
IB 없이 하기, UITableView끝장보기 (4) 테이블 편집 (0) | 2010.09.06 |
---|---|
Foundation Kit (0) | 2010.09.06 |
HIG 번역하다 말았네요 (0) | 2010.09.06 |
IB 없이 하기, UITableView끝장보기 (5) 인덱스 (0) | 2010.09.01 |
IB 없이 하기, UITableView끝장보기 (6) 커스텀 셀 (0) | 2010.09.01 |