我目前正在处理一个在UIView
中显示多个UIScrollView
的应用程序。此UIScrollView
位于UIViewController
。
在循环中,我正在创建新的UIView
,autorelease
,并将它们添加到滚动视图中。这可能是问题吗?
当我尝试释放视图控制器时,所有带有标签,图像等的子视图都会留在内存中。
摆脱这些物品的最佳方法是什么?
答案 0 :(得分:2)
我认为这可能是正在发生的事情:
将UIView添加到UIScrollView时,UIScrollView将保留它。您还在UIView上调用autorelease,因此该对象现在由UIScrollView和NSAutoreleasePool保留。当你释放viewController时,它会将保留计数减一,但是在你进入当前NSAutoreleasePool的排水调用之前,对象不会被释放。
也许尝试不自动释放循环中的对象。只需将它们添加到UIScrollView,然后手动释放它们。这样,UIScrollView将成为这些对象的唯一所有者。
答案 1 :(得分:1)
没有看到一些代码就无法分辨。发布您认为可疑的代码片段。确保您遵循Memory Management Programming Guide for Cocoa中列出的所有规则。