versiones significado iconos descargar apple iphone objective-c dynamic methods messaging

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



ios versiones (3)

Necesita NSSelectorFromString .

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


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);


Puedes intentar algo como

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