是“创建然后发布然后重新创建然后发布”比“创建然后使用两次然后发布”更好吗?

时间:2010-02-22 12:44:09

标签: ios memory-management

假设您有一个可以刷新的tableview。您是否会将activityAnimator保留在内存中,或者每次单击刷新时重新创建它?

我知道这听起来很明显,很明显,在第一种情况下,你可以加快你的应用程序,在另一种情况下,你可以获得更多的可用内存空间。

但我想知道这两者中的一个是否更接近“Apple标准”。

哪一个更重要? CPU使用或内存使用?

不要告诉我这取决于我需要做什么。

3 个答案:

答案 0 :(得分:0)

我认为这不存在“Apple标准”。

但是我认为最好的方法是将对象保留在内存中,因为它允许应用程序提高性能。如果应用程序需要内存,则os将调用didReceiveMemoryWarning方法,此时您将不得不释放未使用的对象。

但如果你有很多对象,那么不时发布一些对象应该是一个好主意。

如果您需要更多信息,可以查看Memory Management Programming Guide for Cocoa

答案 1 :(得分:0)

通过“activityAnimator”我假设你的意思是UIActivityIndicatorView

如果是这种情况,您应该通过Interface Builder添加指标,并将其连接到您的视图控制器。这意味着如果控制器不是最顶层的,则OS可以释放连接的对象,包括指示符(如果需要)。这也意味着您每次使用它时都不必创建和销毁它。两全其美。

话虽如此,这感觉就像是过早优化。我认为支持表视图的数据源会占用UIActivityIndicatorView所需的更多内存。我建议在IB中设置UIActivityIndicatorView并使用它。

答案 2 :(得分:0)

创建一个将创建并返回activityAnimator的方法。它应检查它是否为零,是否创建它。如果不是只返回现有的。然后你可以坚持它,只在该viewController的dealloc或者didRecieveMemoryWarning上发布它。然后,当你需要使用它而不是引用类的引用时,调用你的方法以确保引用被引入。这样你就可以获得最佳性能,但不要与内存问题发生冲突。