En un mot, comment?Méthodes d'instance appelant des méthodes de classe appelant des méthodes d'instance
J'ai un contrôleur de vue qui crée quelques objets personnalisés. L'un de ces objets doit rappeler une méthode dans le contrôleur. L'objet semble vouloir appeler une méthode de classe dans le contrôleur, ce qui peut être correct, sauf que la classe dans le contrôleur doit appeler une méthode d'instance dans le contrôleur, et il ne semble pas vouloir faire cela. Cela a-t-il du sens?
Sinon, voici le code pseudo:
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];
}
Ok, alors quand va callBack, il les erreurs, en disant qu'il cherche + createObj (non -createObj). Je peux changer createObj en une méthode de classe, mais ensuite il y a un problème pour paramétrer foobar parce que foobar a été initialisé dans -viewDidLoad, et je ne peux pas changer cela en + viewDidLoad. Je pourrais peut-être déplacer foobar dans une méthode de classe, mais comment puis-je l'appeler? Au lieu de moi-même, est-ce que je me réfère à [ViewController ...]? Je ne pense pas que cela fonctionne. Je pense qu'il me manque un concept de base et que ce n'est pas aussi difficile que je le fais. Je suis redevable à tous ceux qui peuvent me redresser.
Merci beaucoup.
Hmm ... Merci. J'ai passé des pointeurs dans le passé, et il semble que ce soit un tel kluge que je ne pouvais pas imaginer que c'était la bonne façon de le faire. Donc un objet n'a aucune référence à l'objet qui l'a créé? Les autres langues avec lesquelles j'ai travaillé ont quelque chose comme 'parent' qui est distinct de la super classe de l'objet. Si j'ai un objet uiview qui crée un objet uitableview, cet objet tableview n'a aucune référence à l'instance uiview qui l'a généré? Cette omission en est une que je ne cesse de rencontrer. Merci encore. –
Les vues ont le concept d'une 'superview', qui est la vue qu'elles sont contenues dans-mais il n'y a pas de concept général d'un" objet créant ". Généralement, vous décidez de la relation entre l'objet de contrôleur et l'objet de modèle. Dans votre cas, par exemple, vous pourriez décider qu'une instance de customObj a besoin d'un autre objet pour créer plus d'objets, et vous pourriez modéliser cela en utilisant un délégué (qui est, au fond, un pointeur vers un autre objet, mais c'est plus générique). Il existe toutes sortes de façons de le faire, et la meilleure façon dépend de votre situation particulière. –
Si vous voulez qu'un objet ait un "parent", vous lui en donnez un. En général, je ne trouve pas que j'ai besoin d'un tel couplage spécifique. – Chuck