Es hört sich so an, als hätten Sie es zu komplex gemacht. Offensichtlich ist die Idee nicht wirklich. "Es gibt eine Variable benannt totalSave
"Da sich der Benutzer weniger darum kümmert, wo Sie es speichern, und aus dem Rest Ihres Beitrags sind Sie sich eigentlich nicht darum kümmern, wie Sie es speichern.
Um dies ein bisschen konkreter zu gestalten, sollten wir uns über einen "Gesamtpunkt" -Staat überlegen, zu dem zahlreiche Teile des Programms möglicherweise beitragen könnten. Es gibt einige Ansätze, die Sie möglicherweise verfolgen. In jedem Fall haben Sie wahrscheinlich irgendwo ein Objekt, das die Punktzahl verfolgt. Wir nennen es die Game
Objekt, aber es könnte ein sein Level
oder Wasauchimmer.
Es gibt also drei große Gedankenschulen: Sie können dies bestehen Game
Objekt um alle, Sie können eine haben Game
Singleton, oder Sie können Benachrichtigungen verwenden. Jeder dieser Ansätze hat Vorteile, und jeder, den Sie auswählen, ist wahrscheinlich in Ordnung für ein einfaches Programm (persönlich für ein sehr einfaches Programm würde ich einen Singleton verwenden).
Im ersten Schema erstellen Sie irgendwann im Programm a Game
Objekt, das einige hat addToScore:
Methode. Sie weisen dieses Objekt als Eigenschaft für jedes andere Objekt zu, das die Punktzahl aktualisieren muss. Jeder dieser Anrufe [self.game addToScore:value]
. Dieser Ansatz macht Unit -Tests etwas einfacher, kann jedoch etwas langweilig sein.
Im zweiten Schema haben Sie einige geteiltes Singleton +[Game sharedGame]
. Wenn Sie die Punktzahl aktualisieren möchten, rufen Sie an [[Game sharedGame] addToScore:value]
. Dies ist im Allgemeinen die ASIETIET.
Im dritten Schema haben Sie ein Objekt (Game
) Das verwendet NSNotificationCenter
eine gewisse Benachrichtigung beobachten. Wenn Sie die Punktzahl aktualisieren möchten, veröffentlichen Sie nur eine Benachrichtigung, die den Betrag enthält, der in seinem Benutzerwörterbuch hinzugefügt wird. Dies ist großartig, um die Dinge extrem entkoppelt zu halten, kann aber im üblichen Fall wiederum ein wenig langweilig sein.
Aber wie @Chuck bemerkt, denken Sie wahrscheinlich zu, dass Sie zurückgehen und einige der Tutorials durcharbeiten möchten, um ein besseres Gefühl dafür zu bekommen, wie diese Dinge normalerweise funktionieren. Die Art von Situation, die Sie beschreiben, ist nicht sehr kompliziert.