【发布时间】:2010-07-12 11:37:45
【问题描述】:
恐怕这是一个有点抽象的问题。我基本上是在编写一个围绕宠物的 iPhone 游戏,例如有点像电子宠物。我创建了一个 Pet 对象,其中包含与 Pet 状态相关的所有数据。程序的其余部分访问 Pet 的数据并执行相关操作。
使用 encodeWithCoder 和 initWithCoder 方法将宠物保存到文件中。因此,每当程序中的方法需要访问任何宠物数据时,它都会通过从文件中加载来创建宠物的新实例。如果进行了任何更改,它们将在 Pet 类的方法中完成。这些方法总是以将 Pet 写入文件结束。
因此,当程序运行时,它会不断地写入文件和读取文件,每次进行更改时。然后,如果我想向 Pet 添加一个新变量,比如一个名为 showReaction 的 BOOL 变量(以确定是否显示 Pet 对某个事件的反应),我必须在我的 encodeWithCoder 和 initWithCoder 方法中都包含这个变量.这似乎有点麻烦,因为这些方法因此变得越来越大。并且不断地读写文件似乎效率低下。
我认为更好的方法是使用一个代表宠物的全局变量。并且程序中的任何方法都可以访问这个全局变量来改变它。我写入文件的唯一时间是玩家退出游戏时,而我只在游戏加载时从文件中读取一次。
我的问题是 - 我不确定最好的方法。这是否是良好的编程习惯?我应该在主 ViewController 中声明全局变量,然后在程序运行期间避免释放它吗?我是否能够更改 Pet 类中的变量并在程序运行期间保留这些数据。 IE。在一种方法中将 showReaction 设置为 TRUE,在另一种方法中读取它并在另一种方法中将其设置为 FALSE...
任何建议将不胜感激。我已经编写这个程序有一段时间了,我想知道在我进一步根深蒂固任何不好的做法之前,我是否应该现在进行这些更改。但是考虑到我的代码大小,我不想在没有先咨询专家的情况下进行过多的实验!
谢谢,
迈克尔
【问题讨论】:
标签: objective-c global-variables