Método de llamada Objective C dinámicamente con una cadena

Me pregunto si hay una manera de llamar a un método donde construyo el nombre del método sobre la marcha con una cadena.

por ejemplo, tengo un método llamado loaddata

-(void)loadData; 

para llamar a esto, normalmente lo llamaría así

 [self loadData]; 

Pero quiero poder llamarlo dinámicamente con una cadena, por ejemplo

 NSString *methodName = [[NSString alloc] initWithString:@"loadData"]; [self methodName]; 

Este es un ejemplo estúpido, pero espero que entiendas mi punto. Lo estoy usando para las clases de enlace de datos que estoy configurando para mi aplicación de IPad. Difícil de explicar, pero para que funcione, necesito resolver cómo llamar a un método con una cadena.

¿Algunas ideas?

Gracias

Puedes intentar algo como

 SEL s = NSSelectorFromString(selectorName); [anObject performSelector:s]; 

Puede usar la función objc_msgSend. Se necesitan dos parámetros, el receptor y el selector para enviarlo:

 objc_msgSend(self, someSelector); 

Tendrá que convertir su cadena en el selector apropiado usando NSSelectorFromString :

 NSString *message = [self getSomeSelectorName]; objc_msgSend(self, message); 

El método también toma una cantidad variable de argumentos, por lo que puede enviar mensajes con cualquier cantidad de argumentos.

 NSString *message = [self getSomeSelectorNameWithManyArguments]; objc_msgSend(self, message, arg1, arg2, arg3, arg4); 

Necesita NSSelectorFromString .

    Intereting Posts