0

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

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

有什么建议么?

4

2 回答 2

3

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

于 2012-03-11T11:07:26.633 回答
0

我在构建带有非常大图像的图画书时遇到了同样的问题。我去了您提供链接的其他问题,并为我解决了这个问题。添加“ 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

于 2012-02-15T23:09:03.303 回答