'메소드의'에 해당되는 글 1건

  1. 2010.06.21 [펌] 메소드의 포인터, IMP란?
오브젝트C2010. 6. 21. 09:31
[펌] 메소드의 포인터, IMP란?
[출처] http://wisdom.sakura.ne.jp/programming/objc/index.html
아래의 문서는 위 사이트의 objective-c 강좌를 번역한 내용입니다.
번역기를 돌린 것이므로, 이상한 부분도 있을 수 있음을 참고 해주세요.

메소드를 함수로서 호출한다

사실, Objective-C 의 메소드는 C 언어의 함수와 같습니다. 평상시는

Objective-C 의 메소드는, 항상 IMP 형태이다고 정의됩니다. IMP 형태는,

typedef id (*IMP)(id, SEL, ...);

이 정의로부터도 알 수 있듯이, Objective-C에서 선언된 모든

+ (IMP)instanceMethodFor:(SEL)aSel;

- (IMP)methodFor:(SEL)aSel;

aSel 에는 대상 메소드의 IMP, 즉 함수 포인터를 취득하고 싶은 selecotr를 지정합니다. 메소드는, aSel로 지정된 selector가 특정하는 메소드의 포인터를 돌려줍니다.

 

포인터를 취득할 수 있으면, C 언어에서도 인스턴스 메소드를 호출할

#import <stdio.h>
#import <objc/Object.h>

@interface Test : Object
- (void)Write;
@end

@implementation Test
- (void)Write

{
 printf("I am the bone of my sword.\n");
}
@end

int main()

{
 id obj;
 SEL method;
 IMP func;

 obj = [Test new];
 method = @selector(Write);
 func = [Test instanceMethodFor:method];
 func(obj , method);

 return 0;
}


이 프로그램은, Test

'오브젝트C' 카테고리의 다른 글

[펌] Key-Value Coding  (0) 2010.06.21
[Objective-C] 동적으로 메소드 호출하기  (0) 2010.06.21
[펌] 메소드의 포인터, IMP란?  (0) 2010.06.21
[펌] Objective-C 생성자  (0) 2010.06.21
[강좌] From C++ to Objective-C  (0) 2010.06.21
[펌] id 타입에 대해서...  (0) 2010.06.21
Posted by 오늘마감
TAG , , ,
Trackback 1 Comment 0

댓글을 달아 주세요

«이전  1  다음»