developer tip

문자열을 사용하여 동적으로 메서드를 호출하는 Objective C

optionbox 2020. 10. 27. 08:06
반응형

문자열을 사용하여 동적으로 메서드를 호출하는 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

반응형