iphone - UIImageView setImage 泄漏?

标签 iphone objective-c ios4 ipad

一直在寻找这个问题的解决方案已经无数个小时了。问题其实很简单。我在 nib 中有一个 UIImageView,我正在从互联网加载图像并使用该图像设置 UIIImageView。我正在释放 viewController。 Dealloc 实际上被调用(!)并再次加载 viewController 和图像。这可以通过进入后台模式非常简单地完成。 Instrument Leaks 没有报告任何泄漏,但它在分配中显示它将图像保存在内存中并不断增长。

基本示例:

-(id)init {
    if((self = [super init])) {
        id path = [NSString stringWithFormat:@"http://www.aSite.com/largeImage.jpg"];
        NSData* urlData = [[NSData alloc] initWithContentsOfURL:url];
        UIImage* img = [[UIImage alloc] initWithData:urlData];
        [background setImage:img];
        [urlData release];
        [img release];
    }
    return self;
}

-(void)dealloc {
    [background release];
    [super dealloc];
}

有人说UIImageView其实是leaking,或者说其实是CGImage。有人说 Instrument 显示不正确。使用 2.5mb 大图像执行此操作 10-15 次后,我收到内存警告。结果来自真实设备和最新的 iOS(或至少 4-5 周前)。由于 UIImageView 被这么多人使用,我认为很容易找到问题或从 Apple 获得修复?

CGImage 泄漏的来源: (iphone) UIImageView setImage: leaks?

编辑: 当我写这个例子的时候我有点笨拙。现在的例子是正确的。我也尝试过使用自动释放的对象,但同样的“泄漏”仍然存在。如果您要写答案,请回答问题

最佳答案

释放设置图片后的url

[background setImage:[UIImage imageWithData:urlData]];
[urlData release];
[img release];

关于iphone - UIImageView setImage 泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878690/

相关文章:

iPhone游戏横向方向问题

ios - 有什么方法可以查看键盘是否隐藏?

objective-c - 从 NSIntegers 之间的除法中获取 float

iphone - 有谁知道我在哪里可以找到 iPhone 搜索栏样式?

iphone - iOS SDK 中的视频调用 API?

iphone - 点击键盘上的返回键时提交登录表单条目

iphone - 从地址簿添加联系人时 EXC_BAD_ACCESS?

iphone - 使用 phonegap 在应用内购买

iphone - 如何安装多个内部应用程序? ( 苹果手机)

ios - 如何打印出(NSLog)添加到 NSMutableArray 的自定义对象的属性