compruebe la dinámica si una class responde a un selector respondsToSelector:

Estoy buscando la posibilidad de verificar de forma dinámica si una class responde a un selector.

Por ejemplo, tengo un esquema estricto de nombres de methods en una class como "parse [CountryCode] Adress".

Probé algo como esto:

SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]); if ([CountryTraderDataParser respondsToSelector:@selector(selector)]) { NSLog(@"responds to"); [CountryTraderDataParser selector]; } 

pero esto no funciona

Con una línea de código [CountryTraderDataParser respondsToSelector:@selector(parseDEAddress:)] este ejemplo funciona bien.

¿Existe alguna otra forma / mejor para que este ejemplo funcione?

La variable selector ya es un selector (tipo SEL ), por lo que no debe usar @selector() .

También,

 [CountryTraderDataParser selector]; 

No es válido a less que exista un método llamado selector . Si desea que un object ejecute un método basado en un selector de variable, use -[NSObject performSelector:] .

 SEL selector = NSSelectorFromString([NSString stringWithFormat:@"parse%@Address", @"DE"]); if ([CountryTraderDataParser respondsToSelector:selector]) { NSLog(@"responds to"); [CountryTraderDataParser performSelector:selector]; }