繁体   English   中英

使用URL中的NSData发生内存泄漏

[英]Memory leak Using NSData from URL

我通过线程从URL收到图像。 但是NSData中的内存泄漏。 为什么? 我如何解决它? Iphone devie中的泄漏不在模拟器中。 帮我!!

//视图 - 控制

-(void)viewDidLoad
{

[self performSelectorInBackground:@selector(loadImageScreenshot:) withObject:args];

}

//放置图片

-(void) loadImageScreenshot:(NSDictionary *) args
{
 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
 UIImage * screenshotImage=[UIImage imageWithStringURL:url];
 NSDictionary *args2=[NSDictionary dictionaryWithObjectsAndKeys:
                    [NSNumber numberWithInt:num], @"screenNum",
                    screenshotImage,@"image",
                    nil];                                                               

[self performSelectorOnMainThread:@selector(assignImageToScreenshotImageView:) withObject:args2  waitUntilDone:YES];

[pool release];

}

//图像添加

- (void) assignImageToScreenshotImageView:(NSDictionary *)arg

{ 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage * image= [arg objectForKey:@"image"];
UIImageView *imageview=[UIImageView alloc]init];
               .
               .
 imageview.image=image;
[self.mScreenshotSpace addSubview:imageview];
[imageview release];
 [pool release];
 }

//来自网址的图片

+(UIImage *)imageWithStringURL:(NSString *)strURL
{
 NSURL *url =[NSURL URLWithString:strURL];
 NSData *   data=[[NSData alloc]initWithContentsOfURL:url options:NSDataReadingUncached error:&error];

 UIImage * image=[UIImage imageWithData:data ];
 [data release];
 return image;
 }

您怎么知道它在泄漏? 您正在- (void) assignImageToScreenshotImageView:(NSDictionary *)arg中创建一个- (void) assignImageToScreenshotImageView:(NSDictionary *)arg释放的自动释放池,这是一个泄漏。 否则,代码看起来很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM