En una palabra, ¿cómo?Métodos de instancia llamando a métodos de clase llamando a los métodos de instancia
Tengo un controlador de vista que crea algunos objetos personalizados. Uno de esos objetos necesita volver a llamar a un método en el controlador. El objeto parece querer llamar a un método de clase en el controlador, lo que podría estar bien, excepto que la clase en el controlador necesita llamar a un método de instancia en el controlador, y no parece querer hacer eso. ¿Tiene sentido?
Si no es así, aquí está pseudo código:
ViewController.m
#import "customObj.h"
-(void)viewDidLoad{
[email protected]"string";//declared in ViewController.h
}
-(void)createObj{
[email protected]"different string";
customObj *customObjInstance=[[customObj alloc] init];
}
---
customObj.m
#import "ViewController.h"
-(void)callBack{
[ViewController createObj];
}
bien, así que cuando se ejecuta de devolución de llamada, él los errores, diciendo que está buscando + createObj (no -createObj). Puedo cambiar createObj a un método de clase, pero luego tiene un problema al configurar foobar porque foobar se inicializó en -viewDidLoad, y no puedo cambiarlo a + viewDidLoad. Tal vez podría mover foobar a un método de clase, pero ¿cómo lo llamo? En lugar de yo, ¿me refiero a [ViewController ...]? No creo que eso funcione
Supongo que me falta un concepto básico y no es tan difícil como lo estoy haciendo. Estoy en deuda con cualquiera que pueda arreglarme.
Muchas gracias.
Hmm ... Gracias. Pasé los indicadores en el pasado, y parece tan complicado que no podía imaginar que era la forma correcta de hacerlo. Entonces, ¿un objeto no tiene referencia al objeto que lo creó? Otros idiomas con los que he trabajado tienen algo así como 'parent', que es distinto de la superclase del objeto. Si tengo un objeto uiview que crea un objeto uitableview, ese objeto tableview no tiene ninguna referencia a la instancia uiview que lo generó? Esa omisión es una a la que siempre me enfrento. Gracias de nuevo. –
Las vistas tienen el concepto de una "supervista", que es la vista en la que están contenidas, pero no existe un concepto general de "creación de objeto". Por lo general, usted decide qué relación tiene el objeto controlador con el objeto modelo. En su caso, por ejemplo, puede decidir que una instancia de CustomObj necesita otro objeto para crear más objetos para él, y puede modelar eso usando un delegado (que es, en el fondo, un puntero a otro objeto, pero es más genérico). Hay todo tipo de formas de hacerlo, y la mejor manera depende de su circunstancia específica. –
Si quieres que un objeto tenga un "padre", le das uno. En general, no encuentro que necesite un acoplamiento específico. – Chuck