1

我目前正在开发一个应用程序,它UIViewUIScrollView. 这UIScrollView是在一个UIViewController.

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

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

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

4

2 回答 2

2

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

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

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

于 2009-04-27T01:37:22.690 回答
1

没有看到一些代码就不可能说出来。发布您认为可疑的代码片段。确保您遵循Cocoa 内存管理编程指南中列出的所有规则。

于 2009-04-27T01:22:35.423 回答