【问题标题】:Removing subviews from UIScrollView and memory leak从 UIScrollView 中删除子视图和内存泄漏
【发布时间】:2009-04-27 01:19:20
【问题描述】:

我目前正在开发一个在UIScrollView 中显示多个UIViews 的应用程序。这个UIScrollViewUIViewController 内。

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

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

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

【问题讨论】:

    标签: iphone memory-leaks uiscrollview


    【解决方案1】:

    我想这可能是怎么回事:

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

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

    【讨论】:

      【解决方案2】:

      不看一些代码就无法判断。发布您认为可疑的代码的 sn-p。确保您遵守Memory Management Programming Guide for Cocoa 中列出的所有规则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        相关资源
        最近更新 更多