4

我想就 iOS5 及更高版本(启用 ARC)的最佳实践获得一些意见。例如,我有一个包含汽车的数据库——图像、名称、最大速度等信息。在应用程序中,我必须显示带有信息的汽车,然后,在用户交互之后 - 下一辆车,然后是下一辆车……而不是移动到上一辆。

如果我有一辆汽车,那么哪个是更好的解决方案,为什么?

解决方案 1:第一次使用 alloc 和 init 创建 Car 实例,然后每次我必须显示下一个实例时 - 只需通过更改现有值(速度从 250 到 180 来更新此实例) ,颜色从黑色到红色等)

解决方案 2:每次都使用 alloc 和 init,让 ARC 释放之前占用的内存,而忘记之前分配的对象。

解决方案3:可能还有其他解决方案,如何解决这个问题 - 我很想听听他们。

提前致谢

4

2 回答 2

4

如果你的类真的是 Car 类,它应该代表数据库中的一辆汽车,而不是某种处理程序对象来显示数据库条目。如果你想这样做,你至少应该让它成为一个正确命名和配置的类来完成这种工作。

为您从数据库中读取的每辆汽车创建一个 Car 实例并没有错。

于 2012-09-25T12:52:09.557 回答
2

将图像从磁盘加载到内存可能需要的时间最长。因此,我认为您的解决方案之间的速度不会有任何显着差异。

内存使用量也大致相同。在您的第一种方法中,图像和所有其他实例变量将在您设置新值时被释放。在第二种方法中,整个 Car 实例将被释放,从而释放它的所有实例变量。

从软件设计的角度来看,我建议使用第二种解决方案。一个 Car 实例应该准确地代表它,一个汽车的实例。只有一个实例然后一直更改它的值会产生误导。如果您想做类似的事情,我建议您将您的类重命名为 CarManager 之类的名称,并使用单例对象或使用类方法。

于 2012-09-25T12:56:41.693 回答