繁体   English   中英

iOS情节提要模态关卡和内存

[英]iOS Storyboard Modal Segues and Memory

我的应用程序“简短”说明:

基本上是一本交互式故事书,我有一个用于设置音频会话和音频播放器的类,我的应用中的每个其他类(ViewControllers)都会导入该音频会话和音频播放器,并调用一个或两个函数来设置每次发生某事时播放正确的声音(例如..用户阅读故事)。 每个ViewController都有自己的.m和.h类,并将它们用于动画和动作处理。 我的应用程序的大小(音频/图像/代码)只有60 mb。

现在,将这些ViewController设置在情节提要中(现在有13个),并以模态方式从一个到另一个进行模版化,然后以编程方式关闭以返回。

现在,当我在iPad上运行我的应用程序时,我开始收到内存警告,是的Instruments向我展示了我的应用程序为我选择的每个ViewController大约增加了40 Mb。

我的问题是:

  1. 无论我做什么,它们都驻留在真实的内存中吗? (我以为我没有掌握这些视图控制器的强大指针)。
  2. 我是否有一种简单的方法可以解雇一个控制器,而仍然使用模态搜索来到达下一个控制器?(尝试时遇到麻烦)
  3. Modal Segues可能不是我应该在我的App中执行操作的方式,是吗?! 对于我的“故事书”来说,它们看起来非常友好且轻松,但是现在,它们给了我一段非常艰难的时光。
  4. 您可以根据我的描述给我的任何其他提示,我们都会感激不尽。

谢谢。

  1. 是的,只要您以模态显示即可。 演示者视图控制器保持指向所呈现的视图控制器的强大指针。 您可以在viewWillDisappear中执行以下操作:释放所有可能占用内存的图像和其他视图!
  2. 您可以使用InstantIateViewControllerWithIdentifier:实例化视图控制器,然后使用presentViewController:animated:completion:就像对任何视图控制器一样
  3. 由您决定。 但是,如果愿意,您可以轻松模拟动画。
  4. 如果我正确理解了所有内容,那么我会选择一个类,例如“ AudioEngine”,可以从任何类的任何位置进行访问。 然后,我将像您一样在情节提要中设计所有的视图控制器。 当我需要模态呈现另一个视图控制器时,我将使用第二个问题的答案来实现。 如果仍然有内存问题,我会尝试作弊并始终保留3个视图控制器(就像我们对UIScrollView的无限滚动所做的那样),我将重用它们,并且将使用UIView的动画块来模拟模式表示。

暂无
暂无

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

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