2012-09-18 46 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