繁体   English   中英

在目标C中连续取消分配和分配是否昂贵?

[英]Is it expensive to continuously dealloc and alloc in Objective C?

我有一个iPhone应用程序,该应用程序具有4个选项菜单,并允许用户在视图控制器之间快速切换。 因此,我想使体验更加流畅,每次用户在视图控制器之间切换时,都会立即释放from视图控制器,并分配给to 用户很可能会进行很多切换。 有没有比不断地释放和分配相同的视图控制器更好的方法呢?

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

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

如果是用户在进行切换,则花费在dealloc和/或alloc上的时间是微不足道的,禁止进行任何非常耗时的操作,例如加载数十/数百个图像等。

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

听起来像使用标签栏应用程序可能会更好一些?

如果您最关心内存,那么听起来好像您将要进行大量的加载和卸载操作,这对于最终用户来说将是一个较慢的体验。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM