2012-09-18 48 views
-2

内存泄漏发生在下列行内存泄漏的NSData

NSURL *imageURL = [NSURL URLWithString:currentElementValue]; 

NSData *ndata = [NSData dataWithContentsOfURL:imageURL]; 

UIImage *image1 = [[UIImage alloc] initWithData:ndata]; 

请帮助我。

+1

是否使用ARC该范围本身? – TheAmateurProgrammer

+0

@theAmateurProgrammer:no – Anamika

回答

1

它看起来像行

UIImage *image1 = [[UIImage alloc] initWithData:ndata]; 

是不是被清理正确。更改此任:

UIImage *image1 = [[[UIImage alloc] initWithData:ndata] autorelease]; 

UIImage *image1 = [UIImage imageWithData:ndata]; 

你IMAGEURL(NSURL)和NDATA(NSData)被自动释放所以这应该清理你的错误。

-4

U可以释放在函数结束时在本地创建的对象,如下面

NSURL *imageURL = [NSURL URLWithString:currentElementValue]; 
    NSData *ndata = [NSData dataWithContentsOfURL:imageURL]; 
    UIImage *image1 = [[UIImage alloc] initWithData:ndata]; 
    [ndata release]; 
    [imageURL release]; 

这样每次分配的对象是释放

+4

你正在发布自动发布的对象ndata,你会崩溃 –

+0

在这个例子中'NSData'和'NSURL'都是自动发布的,不需要清理,因为两者都会导致崩溃。但是'UIImage'应该被释放。 – CaptainRedmuff