【问题标题】:Do the viewcontrollers in a UIPageViewController set-up need releasing?UIPageViewController 设置中的视图控制器是否需要释放?
【发布时间】:2012-02-05 12:33:04
【问题描述】:

我正在使用 Xcode 中的 Apple UIPageViewController 模板来创建交互式相册。一切正常,除了每当我翻页(创建一个新的视图控制器)时,内存分配就会不断增加,直到应用程序崩溃。在我看来,视图控制器永远不会被“释放”(我仍然允许在 ARC 环境中使用该词吗?)。它似乎与页面的内容没有任何关系,因为当我注释掉 ...DataViewController 中的所有内容创建内容时,每次翻页时内存仍然会不断上升,并不像当一个大图像被包含,但它仍然不断爬升。

这里有完全相同的问题:PageViewController: How to release ViewControllers added to it? 但这个问题涉及弧前和故事板的情况。添加自动释放是不允许的,而且编译器似乎没有处理它。 :-(

有什么建议吗?

【问题讨论】:

  • 嘿!!!,我面临同样的问题。在我的例子中,有三个视图控制器继续在页面视图控制器上播放。我在每个视图控制器的 didReceiveMemoryWarning 上设置了断点。当警告来临时。在启动视图控制器的次数中,断点在每个视图控制器上命中这些方法。这意味着他们没有被分配。请建议如何解决。

标签: ios5 uipageviewcontroller


【解决方案1】:

问题原来是永远不够该死的“UIImage imagedNamed”构造。在我在某处读到最近的 xcode 版本中已修复此问题后,没有检查可能是我自己的错。所以我假设图像不再被缓存,而事实恰恰相反。一旦我将所有内容更改为“UIImage imageWithContentsOfFile”,该应用程序就开始像婴儿一样顺利运行。

【讨论】:

  • 嘿!!!,我面临同样的问题。就我而言,有三个视图控制器继续在页面视图控制器上播放。我在每个视图控制器的 didReceiveMemoryWarning 上设置了断点。当警告来临时。在启动视图控制器的次数中,断点在每个视图控制器上命中这些方法。这意味着他们没有被分配。请建议如何解决。
  • 这里有同样的问题。试图建立一个儿童应用程序动画动物卡通和播放声音。每个动物详细信息页面都加载到 UIPageViewController 中。 UIPageViewController 永远不会释放内存,除非收到内存警告。你是什​​么意思 imageWithContentsOfFile 解决了这个问题?我正在使用 imageNamed 加载图像。可能是内存未释放的原因?
  • 感谢吉格斯先生。 imageWithContentsOfFile 确实有效,我不敢相信。我为此脱发快一个月了。突然间 UIPageViewController 开始释放内存。 imageNamed: 和 imageWithContentsOfFile: 方法有何不同?这怎么可能是问题?我们怎么能猜到呢?一个多月,一直在找这个 UIPageViewController 缓存问题。给你积分。
【解决方案2】:

我在构建具有非常大图像的图画书时遇到了同样的问题。我去了您提供链接的其他问题,并为我解决了这个问题。添加“autorelease”可以释放内存。

UIPageviewcontroller 委托方法“viewControllerAtIndex”中。我从:

// Create a new view controller and pass suitable data.
ContentViewController *contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil];

并添加了自动释放

// Create a new view controller and pass suitable data.
ContentViewController *contentViewController = [[[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil] autorelease] ;

这没有包含在苹果示例中,但我也在为每个页面使用 xib。我一直在使用工具对此进行调试,发现内存立即被回收,并且之前没有调用 dealloc。

在这里找到答案.... https://stackoverflow.com/a/7934392/1212585

【讨论】:

  • 谢谢。但事实证明这不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多