在Objective C中连续dealloc和alloc是否昂贵?

时间:2012-03-05 15:42:26

标签: iphone objective-c

我有一个iPhone应用程序,它有一个4选项菜单,允许用户快速切换视图控制器。所以我想让体验更顺畅,每次用户在视图控制器之间切换时,from视图控制器立即被释放,to被分配。并且用户很可能会进行大量切换。有没有更好的方法来处理内存,而不是一遍又一遍地释放和分配相同的视图控制器?

3 个答案:

答案 0 :(得分:2)

查看控制器并不昂贵。可以分配和释放它们。然而,观点可能很昂贵。当内存不足时,系统会尝试卸载当前不可见的视图控制器的视图。您的应用应始终注意这一点。在viewDidUnload中释放昂贵的对象,即IBOutlets和可以重新创建的数据。

如果遇到性能问题,则应将所有4个视图控制器保留在内存中。因此视图将加载更快。 iOS负责卸载不可见的视图(适当时)。

答案 1 :(得分:1)

如果用户正在进行切换,那么在dealloc和/或alloc中花费的时间是完全无关紧要的,禁止任何极其耗时的操作,例如加载数十/数百张图像等。

简而言之,按需解决方案和缓存解决方案都会比其他解决方案具有一些微小的优势。您的用户不会注意到差异。

答案 2 :(得分:1)

听起来你可能会更好地使用标签栏应用程序?

如果内存是您的主要关注点,那么听起来您将会加载和卸载很多对终端用户而言较慢的体验。

如果使用标签栏控制器,则在需要内存时,将自动卸载未使用标签中的视图。并在必要时再次加载。