Frage

Ich bin ziemlich neu in Objective-C und als ich gelernt habe, habe ich versucht, mein eigenes Programm zu machen. Die Idee ist, dass es eine Variable (oder ein Objekt?) Benannt ist totalSave, eine Methode addToTotalSaved mit einem Parameter saveAmount, und mehrere Objekte (jedes Objekt würde den Parameter geben saveAmount ein anderer Wert), der bei der Bewirtschaftung verursacht wird addToTotalSaved "gesendet" oder was auch immer die Terminologie ist, um zu " totalSave so dass totalSave Erhöht sich um die richtige Menge.

Wenn meine Vorstellung, wie der Code funktioniert, völlig falsch ist, könnten Sie einen besseren Weg bieten? ... Ich habe das Gefühl, dass dies nicht komplex sein sollte - aber ansonsten ist meine Frage, was sollte totalSave sein? Ein int? Ein Nsinteger? Ein Objekt?

War es hilfreich?

Lösung

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.

Andere Tipps

Es hört sich so an, als ob Sie eine Klasse wollen, die einen Ganzzahlwert mit der Gesamtmenge enthält. Dann möchten Sie dieser Klasse eine Funktion addtotal (Somenum) geben.

Für den Fall könnten Sie dies alles prozedural tun, aber wenn Sie diese Gesamtsumme wiederverwenden möchten, würde ich empfehlen, es in einer Klasse zu füllen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top