2011-05-09 4 views
5

에 의해 선택기에 응답하는 경우 동적 확인 클래스가 선택기에 응답하는 경우 동적 방법으로 체크인 할 가능성을 찾고 있습니다.클래스가 respondsToSelector :

예를 들어 "parse [CountryCode] Adress"와 같은 클래스에 메소드 이름의 엄격한 스키마가 있습니다.

나는이 같은 tryed :

SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]); 

if ([CountryTraderDataParser respondsToSelector:@selector(selector)]) { 
    NSLog(@"responds to"); 
    [CountryTraderDataParser selector]; 
} 

을하지만이 작동하지 않습니다.

하드 코딩 된 줄이 [CountryTraderDataParser respondsToSelector:@selector(parseDEAddress:)]이면이 예제가 정상적으로 작동합니다.

이 효과를 얻으려면 다른/더 좋은 방법이 있습니까?

+0

나는 이미 선택기이기 때문에'@ selector'를 제거해야한다고 생각합니다. – MByD

답변

15

변수는 이미 선택기 (유형 SEL)이므로 @selector()을 사용하지 않아야합니다. selector라는 방법이 아니라면 또한

,

[CountryTraderDataParser selector]; 

가 유효하지 않습니다. 변수 선택기를 기반으로 메서드를 실행하는 객체로하려면 -[NSObject performSelector:]을 사용하십시오.

SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]); 

if ([CountryTraderDataParser respondsToSelector:selector]) { 
    NSLog(@"responds to"); 
    [CountryTraderDataParser performSelector:selector]; 
} 
관련 문제