【问题标题】:How i solve memory leak problem?我如何解决内存泄漏问题?
【发布时间】:2011-05-28 18:51:05
【问题描述】:

我开发了一个简单的应用程序,在其中设计或制作代码,我在其中创建 UIImage 的实例对象。当我在 Ipad 屏幕上滑动时,它会构成屏幕的图像,然后将该图像渲染到 UIImage 对象中,然后将该图像设置为 UIImageView 对象并释放 UIimage 对象。 每次我在屏幕上滑动时,上面的过程都会一次又一次地进行。但它让我在renderImage = [[UIImage alloc] init]; 中泄漏。

代码,

_renderImage = [[UIImage alloc] init];

_textImageV = [[UIImageView alloc] init];

[self renderIntoImage];

-(void)renderIntoImage
{

    UIGraphicsBeginImageContext(bgTableView.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    _renderImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

 _textImageV.image = _renderImage;
[_renderImage release];

在完成刷卡过程后,我还释放了 _textImageV。

如何解决 UIImage *_renderImage 中的内存泄漏问题?

【问题讨论】:

    标签: iphone ipad memory-management memory-leaks


    【解决方案1】:

    在这一行:

    _renderImage = UIGraphicsGetImageFromCurrentImageContext();
    

    UIGraphicsGetImageFromCurrentImageContext() 返回一个新的自动释放UIImage 并将_renderImage ivar 指向它。先前分配的UIImage 从未真正释放,它的变量只是重新指向其他地方。

    这个废弃的UIImage 导致/是内存泄漏。您应该在将 _renderImage 指向其他东西之前释放它,或者您一开始就不能分配它。

    【讨论】:

    • 我们怎样才能在分配给其他东西之前释放它?
    • 这适用于 ARC 吗?如果是这样,我们如何发布它?
    猜你喜欢
    • 2012-05-23
    • 2012-08-19
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多