Question

Je suis assez nouveau dans Objective-C, et comme j'ai appris, j'ai essayé de faire mon propre programme. L'idée existe-t-il une variable (ou un objet?) totalSave, une méthode addToTotalSaved avec un paramètre saveAmount, et plusieurs objets (chaque objet donnerait le paramètre saveAmount une valeur différente) qui, lorsqu'elle est mise en œuvre, provoquera addToTotalSaved être «envoyé», ou quelle que soit la terminologie, pour totalSave pour que totalSave augmente du montant correct.

Tout d'abord, si mon idée du fonctionnement du code est complètement erronée, pourriez-vous offrir une meilleure façon? ... J'ai l'impression que cela ne devrait pas être complexe - mais sinon ma question est ce qui devrait totalSave être? Un int? Un nsinteger? Un objet?

Était-ce utile?

La solution

Cela semble que vous l'avez rendu trop complexe. De toute évidence, l'idée n'est pas vraiment "il y a une variable nommée totalSave"Étant donné que l'utilisateur pouvait se soucier de l'endroit où vous le stockez, et du reste de votre message, vous ne vous souciez pas de la façon dont vous le stockez.

Cela dit, afin de rendre cela un peu plus concret, réfléchissons à un "score total" indique à laquelle de nombreuses parties du programme pourraient ajouter. Il y a quelques approches que vous pourriez adopter. Dans tous les cas, vous avez probablement un objet quelque part qui suit le score. Nous l'appellerons le Game objet, mais cela pourrait être un Level ou peu importe.

Il y a donc trois grandes écoles de pensée: vous pouvez passer ceci Game Objectif pour tout le monde, vous pouvez avoir un Game Singleton, ou vous pouvez utiliser des notifications. Chacune de ces approches présente des avantages, et toute personne que vous choisissez est probablement bien pour un programme simple (personnellement, pour un programme très simple, j'utiliserais un singleton).

Dans le premier schéma, à un moment donné du programme, vous créez un Game objet qui a un peu addToScore: méthode. Vous attribuez cet objet en tant que propriété sur tous les autres objets qui doivent mettre à jour le score. Chacun de ces appels [self.game addToScore:value]. Cette approche rend les tests unitaires un peu plus simples, mais peut être un peu fastidieux à implémenter.

Dans le deuxième schéma, vous en avez singleton partagé +[Game sharedGame]. Lorsque vous souhaitez mettre à jour le score, appelez [[Game sharedGame] addToScore:value]. Il s'agit généralement de la facile à mettre en œuvre.

Dans le troisième schéma, vous avez un objet (Game) qui utilise NSNotificationCenter pour observer une notification. Lorsque vous souhaitez mettre à jour le score, vous publiez simplement une notification qui inclut le montant à ajouter dans son dictionnaire utilisateur. C'est idéal pour garder les choses extrêmement découplées, mais encore une fois, peut être un peu fastidieuse dans le cas plus habituel.

Mais comme le note @Chuck, vous pensez probablement à cela, et vous voudrez peut-être revenir en arrière et parcourir certains des tutoriels pour avoir une meilleure idée de la façon dont ces choses fonctionnent habituellement. Le type de situation que vous décrivez n'est pas très compliqué.

Autres conseils

Il semble que vous vouliez une classe, contenant une valeur entière avec le total. Ensuite, vous voulez donner à cette classe une fonction addtototal (Somenum).

En théorie, vous pouvez le faire tous de manière procédurale, mais si vous voulez réutiliser ce total, je recommanderais de le fourrer dans une classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top