我目前正在开发一个应用程序,它UIView
在UIScrollView
. 这UIScrollView
是在一个UIViewController
.
在一个循环中,我正在创建新UIView
的 s,autorelease
它们并将它们添加到滚动视图中。这可能是问题吗?
当我尝试释放视图控制器时,所有带有标签、图像等的子视图都留在内存中。
摆脱这些物体的最佳方法是什么?
我目前正在开发一个应用程序,它UIView
在UIScrollView
. 这UIScrollView
是在一个UIViewController
.
在一个循环中,我正在创建新UIView
的 s,autorelease
它们并将它们添加到滚动视图中。这可能是问题吗?
当我尝试释放视图控制器时,所有带有标签、图像等的子视图都留在内存中。
摆脱这些物体的最佳方法是什么?
我认为这可能是正在发生的事情:
当您将 UIView 添加到 UIScrollView 时,UIScrollView 将保留它。您还在 UIView 上调用 autorelease,因此该对象现在由 UIScrollView 和 NSAutoreleasePool 保留。当您释放 viewController 时,它会将保留计数减一,但在您到达当前 NSAutoreleasePool 的排水调用之前,不会释放对象。
也许尝试不自动释放循环中的对象。只需将它们添加到 UIScrollView,然后手动释放它们。这样,UIScrollView 将成为这些对象的唯一所有者。
没有看到一些代码就不可能说出来。发布您认为可疑的代码片段。确保您遵循Cocoa 内存管理编程指南中列出的所有规则。