あなたはそれを過度に複雑にしたように聞こえます。totalSave
明らかに、ユーザーはそれをどこに保存するかをあまり気にしない可能性があり、投稿の残りの部分から、実際にどのように保存するかは気にしないため、実際には「」という名前の変数があるという考えではありません。
そうは言っても、これをもう少し具体的にするために、プログラムの多くの部分が追加される可能性のある「合計スコア」の状態について考えてみましょう。いくつかの方法があります。いずれにせよ、スコアを追跡しているオブジェクトがどこかにある可能性があります。Game
これをオブジェクトと呼びますが、Level
か何かである可能性があります。
したがって、3 つの大きな考え方があります。このGame
オブジェクトを全員に渡す、Game
シングルトンを使用する、または通知を使用することができます。これらのアプローチにはそれぞれ利点があり、どれを選択しても単純なプログラムにはおそらく問題ありません (個人的には、非常に単純なプログラムにはシングルトンを使用します)。
最初のスキームでは、プログラムのある時点で、何らかのメソッドGame
を持つオブジェクトを作成します。addToScore:
スコアを更新する必要がある他のすべてのオブジェクトに、このオブジェクトをプロパティとして割り当てます。それらの呼び出しのそれぞれ[self.game addToScore:value]
。このアプローチにより、単体テストが少し簡単になりますが、実装が少し面倒になる可能性があります。
2 番目のスキームでは、いくつかの共有シングルトン +[Game sharedGame]
があります。スコアを更新する場合は、 を呼び出します[[Game sharedGame] addToScore:value]
。これは一般的に実装が簡単です。
3 番目のスキームには、何らかの通知を監視するためGame
に使用するオブジェクト ( ) があります。NSNotificationCenter
スコアを更新したい場合は、ユーザー辞書に追加する金額を含む通知を投稿するだけです。これは、物事を非常に分離した状態に保つのに最適ですが、より一般的なケースでは少し退屈になる可能性があります.
しかし、@Chuck が指摘しているように、あなたはおそらくこれを考えすぎているので、戻っていくつかのチュートリアルに取り組み、これらが通常どのように機能するかをよりよく理解することをお勧めします。あなたが説明している状況はそれほど複雑ではありません。