Accès a un objet depuis une autre Classe
ApheloManis
Membre
Salut
Je me pose la question suivent. Comment accéder à un objet crée par une autre classe?
Je m'explique. J'ai la Classe A, B, C avec chacune ses propres méthodes.
La Classe A crée un objet B1 qui est une instance de la classe B
classB *B1 = [[classB alloc] init];
Maintenant ce que je veux, c'est accéder au contenue de cet objet depuis la classe C. Pour exécuter une méthodes, en utilisent les données de l'objet B1 crée par la classe A.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
T'as plusieurs solutions.
1- tu passes l'objet en param, ex :
2- t'utilise un singleton pour stocker la classe
3- dans l'objet B tu rajoutes une property classA et donc tu fais ensuite :
Bon je bloque, je bloque , je bloque!
Pour résumer, j'ai deux classes MousePosition et CoorditateProssesing. Je ne parviens pas en envoyer les données de MousePosition dans CoorditateProssesing pour les utilisés dans cette dernière.
Montre nous ton code pour qu'on comprenne ce que tu essayes de faire exactement.
Ici c'est la seul méthode de la classe MousePosition
Dans CoordinateProcessing.h j'ai
et mon CoordinateProcessing.m
Le problème c'est que MousePosition me crée toujours un nouvel objet CoordinateProcessing. Du coup je ne comprends vraiment pas comment faire
C'est toi qui crée un nouvel objet à chaque fois avec la ligne :
Si tu ne veux pas crée à chaque fois un nouvel objet, ben ne le crée pas . Tu peux agir sur l'objet directement :
Merci merci merci
Je suis content, car j'ai trouvé d'autres erreurs du coup
Je tourne encore en rond ! Je ne parviens pas à ajouter des infos dans l'objet CoordinateProssesing créé par MousePossition depuis la classe AppDelegate.
Salut,
ça dépend comment tu as déclaré ton objet "CoordinateProssesing" et ou tu l'as déclaré. Montre plus de code en rapport avec ton objet "CoordinateProssesing"
Là il commence à devenir long le code. Du coup j'ai mis le projet sur GitHub. La déclaration de l'objet CoordinateProssesing je l'ai fait comme tu me l'as proposé
Puisque tu l'as déclaré dans "MousePosition" donc il faut d'abord avoir une référence vers cette dernière puis accéder à ton objet.
Rajoute ça dans ton AppDelegate :
Ensuite tu relie ton outlet dans ton xib
Maintenant tu peux accéder à ton objet "CoordinateProssesing" via mousePosition que tu as déclarée dans l'AppDelegate.
PS : Ce n'est pas la meilleur solution que je t'ai donnée, tu peux améliorer ton code :
Utilisation des property au lieux des iVar
Une seule responsabilité par classe,
Mais bon essaie de résoudre ton problème e mousePosition d'abord .
Révise un peu aussi les notions des classes, objet,...
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/OOP_ObjC/OOP_ObjC.pdf
Merci encore. C'est ma première app en dehors des sentiers battus des livres . Du coup j'ai un peu de mal à lier toutes les infos reçu.
Là je fais une première version comme je peux, pour comprendre la relation entre les objets et le fonctionnement de la programmation orienté objet. Puis en deuxième partie. Je compte faire plusieurs classes, utiliser les property et réduire le code. Ce n'est pas évident tout ça au début
Il se trouve que peux importe l'emplacement dans AppDelegate de
j'ai un warning rouge ! J'importe bien MousePosition
Je t'invite à réaliser quelques tutos ou visionner les cours de Stanford (gratuit sur iTunesU) et pour mieux comprendre tous ces mécanismes, tu y verras plus clair après.
Parce que sur Mac, l'App Delegate est souvent instancié dans MainMenu.xib, alors c'est un objet facilement accessible. Quand on veut bricoler rapidement, ça a du sens.
(Même si c'est une mauvaise idée sur le long terme).