반응형
문자열을 사용하여 동적으로 메서드를 호출하는 Objective 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
반응형
'developer tip' 카테고리의 다른 글
Capistrano v3의 서버에서 쉘 명령을 실행하는 방법은 무엇입니까? (0) | 2020.10.27 |
---|---|
인증 자격 증명 제거 — django, elastic beanstalk, oauth (0) | 2020.10.27 |
Glimpse를 프로덕션 사이트에 배포해야합니까? (0) | 2020.10.27 |
string :: c_str ()은 C ++ 11에서 더 이상 null로 끝나지 않습니까? (0) | 2020.10.27 |
Mac에서 bashrc 파일은 어디에서 찾을 수 있습니까? (0) | 2020.10.27 |