estoy tratando este método se encuentra en Obj-c runtime referencemétodos añadiendo dinámicamente
BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
Quiero añadir un nuevo método como:
- [AClass drawWithFrame:(NSRect)rect inView:(id)view]
Hasta ahora he escrito una función C:
void drawWithFrameInView(id this, SEL this_cmd, NSRect frame, id view){
...
}
ahora estoy listo para hacer:
BOOL success = class_addMethod(NSClassFromString(@"AClass"),
@selector(drawWithFrame:inView:),
(IMP)drawWithFrameInView,
"[email protected]:@:@:");
pero success
nunca es SÍ, he intentado el mismo enfoque con métodos con firmas más simples y funcionó. Así que creo que el problema es el último parámetro: "[email protected]:@:@:"
¿Qué debo pasar en este caso para que funcione mi nuevo método?
¿Por qué no nombrar los dos primeros argumentos 'self' y' _cmd', para que pueda escribir el mismo código que habría escrito en un método? –
Hummm ... solo por una razón estética. Desde el punto de vista de C, se supone que 'self' y' _cmd' son parámetros normales. No me gustó el hecho de que un parámetro se coloreara como palabras clave en Obj-C (a pesar de que representan esas palabras clave). Eso es todo :) – nacho4d