Ok Je pense que ma compréhension des propriétés de l'objectif c ne correspond peut-être pas à ce que je pensais.Pourquoi ma variable n'est-elle pas affectée
Dans mon programme, j'ai un singleton qui contient ma classe.
Dans ma classe lors de l'initialisation, j'attribue une valeur du singleton à ma propriété. Puis, j'attribue une valeur à une propriété de cette propriété.
Cependant il ne garde pas la valeur et quand je fais une comparaison de la valeur dans le singleton rien n'a changé. Qu'est-ce qui se passe ici? Des idées?
@interface MainGameLoop : NSObject {
MapData *mapData;
}
@property (retain) MapData *mapData;
-(id) init
{
self = [super init];
GlobalVariables *sharedManager = [GlobalVariables sharedManager];
self.mapData = sharedManager.mapData;
return self;
}
En fonction de ma classe:
œuvres:
sharedManager.mapData.currentPlayer = newCurrentPlayer;
ne fait rien:
self.mapData.currentPlayer == newCurrentPlayer;
Je doute de la nécessité d'une classe GlobalVariables. Tout d'abord, vous n'avez pas besoin de tout mettre dans les classes en Objective-C; vous pouvez très bien faire de vraies variables globales. (Et les planquer dans un singleton ne les rend pas moins globaux ou moins variables.) Deuxièmement, pourquoi avez-vous besoin de ce singleton? Pourquoi ne pas avoir l'objet MainGameLoop (que je pourrais renommer en "Game" ou quelque chose) posséder les données de carte purement et simplement? –
Aussi, je conteste que vous avez "un singleton [objet] qui contient ma classe". Il n'y a généralement pas de raison pour qu'un objet possède une classe, à moins que l'objet ne crée dynamiquement des instances d'une classe fournie par l'appelant (comme le font NSObjectController et NSArrayController). Il ressemble plus à votre singleton possède une * instance * de la classe MapData. –
Vous avez raison, il possède juste une instance de la classe. Je l'ai mis dans un singleton parce que je continuais à devoir passer l'instance de mapdata à toutes mes autres classes via leur constructeur et cela commençait à prendre beaucoup de temps. Je doute que c'était la meilleure façon de le faire. – Mel