J'ai initialisé une classe dans mon singleton appelée DataModel. Maintenant, à partir de mon UIViewController, quand je clique sur un bouton, j'ai une méthode qui essaie d'accéder à cette classe afin que je puisse ajouter un objet à l'un de ses dictionnaires. Ma méthode get/set renvoie le pointeur vers la classe de mon singleton, mais quand je suis de retour dans mon UIViewController, la classe passée ne répond pas aux méthodes. C'est comme si ce n'était pas là. Je pense que cela a quelque chose à voir avec la différence de passer des pointeurs autour des classes ou quelque chose. J'ai même essayé d'utiliser la méthode de copie pour renvoyer une copie, mais pas de chance.Obj-C: Passer des pointeurs vers des classes initialisées dans d'autres classes
UIViewController:
ApplicationSingleton *applicationSingleton = [[ApplicationSingleton alloc] init];
DataModel *dataModel = [applicationSingleton getDataModel];
[dataModel retrieveDataCategory:dataCategory];
Singleton:
ApplicationSingleton *m_instance;
DataModel *m_dataModel;
- (id) init {
NSLog(@"ApplicationSingleton.m initialized.");
self = [super init];
if(self != nil) {
if(m_instance != nil) {
return m_instance;
}
NSLog(@"Initializing the application singleton.");
m_instance = self;
m_dataModel = [[DataModel alloc] init];
}
NSLog(@"ApplicationSingleton init method returning.");
return m_instance;
}
-(DataModel *)getDataModel {
DataModel *dataModel_COPY = [m_dataModel copy];
return dataModel_COPY;
}
Pour la méthode getDataModel, j'ai aussi essayé ceci:
-(DataModel *)getDataModel {
return m_dataModel;
}
Dans ma méthode DataModel retrieveDataCategory, je ne pouvais pas quelque chose à travailler. J'ai même juste essayé de mettre un NSLog dedans mais il ne viendrait jamais sur la console.
Des idées?
une chose simple à vérifier: assurez-vous que vos objets ne sont pas nuls, car un message à nil est un no-op – cobbal
Oh, mon DataModel * m_dataModel n'est pas nul. Dans ma méthode init pour cette classe, j'ai tout un tas de choses avec NSLogs pour le prouver. ;) Alors, c'est vivant et plein de trucs. C'est juste quand je passe la classe initialisée de mon singleton à mon UIViewController, le UIViewController ne peut appeler aucune méthode sur le DataModel. – FnGreg7
Je suppose que 'm_instance' et' m_dataModel' ne sont pas déclarés comme ivars dans '@ interface' et que ces déclarations sont dans le fichier d'implémentation? –