听起来你确实把它变得过于复杂了。显然,这个想法并不是真的“有一个名为 totalSave
“由于用户可能不太关心您将其存储在哪里,并且从帖子的其余部分来看,您实际上并不关心如何存储它。
也就是说,为了使这一点更加具体,让我们考虑一下程序的许多部分可能会添加到的“总分”状态。您可以采取几种方法。无论如何,您可能在某个地方有一些对象正在跟踪分数。我们将其称为 Game
对象,但它可能是一个 Level
管他呢。
因此存在三大思想流派:你可以通过这个 Game
反对每个人,你可以有一个 Game
单例,或者您可以使用通知。这些方法中的每一种都有优点,并且您选择的任何一种都可能适合简单的程序(就我个人而言,对于非常简单的程序,我会使用单例)。
在第一个方案中,在程序中的某个时刻您创建了一个 Game
对象有一些 addToScore:
方法。您可以将此对象指定为需要更新分数的每个其他对象的属性。这些电话中的每一个 [self.game addToScore:value]
. 。这种方法使单元测试变得更简单,但实施起来可能有点乏味。
在第二个方案中,你有一些 共享单例 +[Game sharedGame]
. 。当您想更新分数时,请致电 [[Game sharedGame] addToScore:value]
. 。这通常是最容易实现的。
在第三种方案中,你有一些对象(Game
)使用 NSNotificationCenter
观察一些通知。当您想要更新分数时,您只需发布一条通知,其中包含要添加到其用户词典中的金额。这对于保持事物高度解耦非常有用,但在更常见的情况下可能会有点乏味。
但正如 @Chuck 指出的那样,您可能对此想得太多了,您可能想返回并完成一些教程,以更好地了解这些事情通常是如何工作的。你所描述的这种情况并不是很复杂。