Ios 是";创建然后发布,然后重新创建然后发布”;优于;创建然后使用两次然后发布;?

Ios 是";创建然后发布,然后重新创建然后发布”;优于;创建然后使用两次然后发布;?,ios,memory-management,Ios,Memory Management,假设您有一个可以刷新的tableview。您是将activityAnimator保留在内存中,还是每次单击“刷新”时都重新创建它 我知道这听起来很明显,很明显,在第一种情况下,你可以加速你的应用程序,在另一种情况下,你可以有更多的可用内存空间 但我想知道这两个标准中是否有一个更接近“苹果标准” 哪一个更重要?CPU使用还是内存使用 不要告诉我这取决于我需要做什么。我不认为存在“苹果标准” 然而,我认为最好的方法是将对象保存在内存中,因为它允许应用程序提高性能。如果应用程序需要内存,操作系统将调用

假设您有一个可以刷新的tableview。您是将activityAnimator保留在内存中,还是每次单击“刷新”时都重新创建它

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

但我想知道这两个标准中是否有一个更接近“苹果标准”

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


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

我不认为存在“苹果标准”

然而,我认为最好的方法是将对象保存在内存中,因为它允许应用程序提高性能。如果应用程序需要内存,操作系统将调用didReceiveMemoryWarning方法,此时您必须释放未使用的对象

但是,如果你有很多对象,不时地释放一些对象应该是个好主意

如果您需要更多信息,可以通过“activityAnimator”查看

,我想您指的是
UIActivityIndicatorView

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


话虽如此,这感觉像是过早的优化。我可以想象,支持表视图的数据源将占用比
UIActivityIndicatorView
多得多的内存。我建议在IB中设置并使用
UIActivityIndicatorView

创建并返回activityAnimator的方法。它应该检查其是否为nil以及是否为create。如果不只是返回现有的。然后,您可以保留它,并仅在该viewController解除锁定或收到MemoryWarning时释放它。然后,当您需要使用它而不是引用类的引用时,请调用您的方法以确保引用已被灌输。这样,您可以获得最佳性能,但不会与内存问题发生冲突。

我尝试将UIActivityIndicatorView添加到IB中,但它不允许我这样做。。。在IB中,我有一个带有导航控制器和根视图控制器的窗口。我在我的rootViewController中添加了我的tableView,但每次我尝试在我的tableView上添加指示器时,它都会替换我的tableView,而我只得到了我的微调器。。。问题是我希望我的微调器位于我的tableView之上…@gotye您的table view应该是UIView的同级,并且活动指示器也应该是同一UIView的同级。因此,创建一个新的UIView,将其连接到控制器的视图IBOutlet,然后向其中添加一个表视图和一个活动微调器。如果您仍然无法理解,请参阅IB教程。视图控制器实际上是我的导航控制器的根视图控制器。。。推送新视图时是否会调用根视图控制器的dealloc方法?我认为不会。然而,由于它总是在内存不足时释放它(如果你允许的话),所以我不再担心它了。就像@freespace所说的。UIActivityIndicatorView的内存占用可能只是tableView数据源的一小部分,对此我不会太担心。选择此处建议的任何一种方法。好的,我想我明白了!干杯