【问题标题】:Scoreboard using Global Variable or Singleton使用全局变量或单例的记分牌
【发布时间】:2011-01-10 07:37:07
【问题描述】:

对于我正在编写的 iPad 程序,我使用模态视图作为用户访问记分牌的方式。分数是手动保存的。在记分牌视图上,我有一个按钮可以增加分数,一个按钮可以减少分数,这会更新 UILabel 以显示更新后的分数。还有第三个按钮可以关闭记分板,并且模式视图被关闭。

在玩游戏时,我会访问记分牌并更新分数。然后我关闭记分牌并继续游戏。游戏玩法包括使用 UINavigationController 访问多个视图。当我稍后在游戏中访问记分牌时,分数被重置为 0。

应该如何存储变量,以便在访问记分牌时保留用户设置的分数?

我一直在研究全局变量、单例和其他一些方法。似乎有很多关于如何做到这一点的争论。由于记分牌是从几个不同的视图访问的,我不确定如何存储 score 变量。

如有任何建议,我将不胜感激。

【问题讨论】:

    标签: objective-c singleton global-variables ipad


    【解决方案1】:

    就个人而言,我认为最好避免为此使用全局变量,因为它会破坏封装并且可能没有必要使用单例(在我看来,在大多数情况下最好避免使用它)。

    一种可能对您有用的可能性(根据您的描述)是子类 UINavigationController 并在子类中为您的记分板视图提供一个实例变量。听起来记分板视图总是从由导航控制器控制的视图访问。无论视图控制器将调用记分板视图,都可以获取导航控制器对象并将其记分板对象(将具有当前分数)用作模态视图。

    我也不清楚显示分数的 UILabel 是计分板视图的一部分还是属于另一个视图。如果它属于另一个视图,也可以从 UILabel 中检索分数,然后对其进行更新。

    如果您需要保留分数,那么您可以使用 NSUserDefaults 来存储分数。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2011-08-18
      • 1970-01-01
      • 2013-06-12
      相关资源
      最近更新 更多