gpt4 book ai didi

iPhone UIImage 内存泄漏

转载 作者:行者123 更新时间:2023-12-03 20:35:05 28 4
gpt4 key购买 nike

我正在使用 UIScrollView 实现图像浏览器。由于内存成本,我必须实现图像动态加载(我不想使用 CATiled Layers,因为它迫使用户等待加载每个图 block )。

我尝试了多种方法:

- (UIImageView*) ldPageView{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
NSError *error;
NSData *imData = [NSData dataWithContentsOfURL:ldPageRef options:NSDataReadingUncached error:&error];
UIImage *im = [[UIImage alloc] initWithData:imData];
ldView = [[UIImageView alloc] initWithImage:im] ;
[ldView setFrame:pageRect];
[pool release]; // Release the objects in the pool.
return ldView;
}

即使这样

- (UIImageView*) ldPageView{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool
CGDataProviderRef provider = CGDataProviderCreateWithURL ((CFURLRef)ldPageRef);
CGImageRef d = CGImageCreateWithJPEGDataProvider(provider,nil, true,kCGRenderingIntentDefault);
UIImage *im = [[UIImage alloc] initWithCGImage:d];
ldView = [[[UIImageView alloc] initWithImage:im] autorelease];
[im release];
CGDataProviderRelease(provider);
CGImageRelease(d);
[ldView setFrame:pageRect];
[pool release]; // Release the objects in the pool.
return ldView;
}

但每次我在模拟器和 iPad 上尝试时,内存都会爆炸。我已经使用 Instruments 运行了我的代码,没有报告泄漏。 ldView 是一个实例变量,它与对象 dealloc 上的 ldPageRef 一起释放(肯定会调用)。

我也尝试将 NSURLCache sharedCache 设置为 nil 或零,但它仍然发生。

我已阅读内存管理指南,但一切对我来说似乎都不错。请帮忙

最佳答案

尝试使用

UIImage *im = [UIImage imageWithData:imData];

而不是

UIImage *im = [[UIImage alloc] initWithData:imData];

尽可能避免分配,否则您必须确保手动释放对象。

关于iPhone UIImage 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com