반응형
문자열을 이용한 동적 C 호출 방법
그냥 메소드의 이름을 문자열로 즉석에서 만드는 메소드를 호출하는 방법이 있는지 궁금합니다.
예를 들어 loaddata라는 방법이 있습니다.
-(void)loadData;
이것을 부르는 것은 보통 그렇게 부릅니다.
[self loadData];
하지만 저는 문자열로 동적으로 호출할 수 있기를 원합니다.
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
이것은 어리석은 예이지만 당신이 내 요점을 이해하기를 바랍니다.IPad 어플리케이션을 위해 설정하는 데이터 바인딩 클래스에 사용하고 있습니다.설명하기 어렵지만 불을 붙이려면 끈으로 메소드를 호출하는 방법을 생각해야 합니다.
무슨 생각 있어요?
감사해요.
당신은 다음과 같은 것을 시도할 수 있습니다.
SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
objc_msgSend 기능을 이용하실 수 있습니다.여기에는 수신기와 선택기의 두 가지 파라미터가 필요합니다.
objc_msgSend(self, someSelector);
다음을 사용하여 문자열을 적절한 선택기로 변환해야 합니다.NSSelectorFromString
:
NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);
메서드는 또한 변수 개수의 인수를 사용하므로 임의 개수의 인수를 사용하여 메시지를 보낼 수 있습니다.
NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);
언급URL : https://stackoverflow.com/questions/4446883/objective-c-calling-method-dynamically-with-a-string
반응형
'programing' 카테고리의 다른 글
jQuery로 HTML 태그를 제거하는 방법? (0) | 2023.10.12 |
---|---|
JQUERY UI 아코디언 시작이 붕괴되었습니다. (0) | 2023.10.12 |
타임리프에서 변수 이름에 대한 값 설정 (0) | 2023.10.12 |
C에 ()의 크기에 해당하는 비트가 있습니까? (0) | 2023.10.12 |
AngularJS: ngTouch 300ms 지연 (0) | 2023.10.12 |