从UIScrollView中删除子视图和内存泄漏

时间:2009-04-27 01:19:20

标签: iphone memory-leaks uiscrollview

我目前正在处理一个在UIView中显示多个UIScrollView的应用程序。此UIScrollView位于UIViewController

之内

在循环中,我正在创建新的UIViewautorelease,并将它们添加到滚动视图中。这可能是问题吗?

当我尝试释放视图控制器时,所有带有标签,图像等的子视图都会留在内存中。

摆脱这些物品的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我认为这可能是正在发生的事情:

将UIView添加到UIScrollView时,UIScrollView将保留它。您还在UIView上调用autorelease,因此该对象现在由UIScrollView和NSAutoreleasePool保留。当你释放viewController时,它会将保留计数减一,但是在你进入当前NSAutoreleasePool的排水调用之前,对象不会被释放。

也许尝试不自动释放循环中的对象。只需将它们添加到UIScrollView,然后手动释放它们。这样,UIScrollView将成为这些对象的唯一所有者。

答案 1 :(得分:1)

没有看到一些代码就无法分辨。发布您认为可疑的代码片段。确保您遵循Memory Management Programming Guide for Cocoa中列出的所有规则。