【问题标题】:Load UIImages correctly? Memory Management with "Leaks"正确加载 UIImages?带有“泄漏”的内存管理
【发布时间】:2011-02-16 23:57:20
【问题描述】:

我创建了一个小游戏,当用户在移动时触摸屏幕时会加载图像。立即加载不同的图像取决于屏幕位置。 我有一个 UIImageView,因为在“touchesMoved”函数中,我正在加载不同的图像:

 imageView.image =  [UIImage imageNamed: [photos objectAtIndex: newImage ] ] ;

现在我想使用带有“分配”和“内存监视器”的仪器来改进我的内存管理。这是我用“Mark Heap”点设置不同的快照并寻找泄漏。上面的行被突出显示,现在我想知道它有什么问题。我怎样才能改进图像加载(不缓存)?

【问题讨论】:

    标签: iphone memory-management uiimage


    【解决方案1】:

    阅读此Dispelling the UIImage imageNamed: FUD

    并阅读问题中的链接。应该回答你需要的一切。

    【讨论】:

      【解决方案2】:

      首先:imageNamed:缓存图片。 如果您要突出显示此行,则可能有 2 个原因(或两者兼有):

      1. 你没有正确释放 imageView
      2. 您没有正确释放照片数组

      【讨论】:

        【解决方案3】:

        +imageNamed 返回一个自动释放的对象,但 UIImageView 中的@property image 在使用过程中一直保留它,直到被覆盖。 -objectAtIndex: 必须返回一个保留计数为 1 且未被释放的对象。

        如果确实是这个问题,那么解决方法就是

        imageView.image =  [UIImage imageNamed: [[photos objectAtIndex: newImage ] autorelease]];
        

        但我怀疑这是这里的真正问题。

        【讨论】:

        • 糟糕的解决方案。你必须找到泄漏的真正原因,而不是像这样修复它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-08
        • 2012-05-19
        • 2018-06-19
        • 1970-01-01
        • 2014-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多