Iphone 如何释放那些未分配的对象的内存?
我已初始化图像,如:Iphone 如何释放那些未分配的对象的内存?,iphone,objective-c,ios4,memory-management,memory-leaks,Iphone,Objective C,Ios4,Memory Management,Memory Leaks,我已初始化图像,如: NSString *url=[NSString stringWithFormat:@"url/%@",[self.urlOfImagesToDownload objectAtIndex:i]]; UIImage *myImage=[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: url]]]; NSLog(@"%d byte of dat
NSString *url=[NSString stringWithFormat:@"url/%@",[self.urlOfImagesToDownload objectAtIndex:i]];
UIImage *myImage=[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: url]]];
NSLog(@"%d byte of data", [[NSData dataWithContentsOfURL: [NSURL URLWithString: url]] length]);
if (myImage)
{
NSString *jpegFilePath = [NSString stringWithFormat:@"%@/%@.jpg",[self pathForDocumentDirectory],[self.idOfImagesToDownload objectAtIndex:i]];
NSData *data1 = [NSData dataWithData:UIImageJPEGRepresentation(myImage, 1.0f)];//1.0f = 100% quality
[data1 writeToFile:jpegFilePath atomically:YES];
}
现在如何释放NSString*jpegFilePath
和NSData*data1
如果我有一个方法:
-(void) changeImageSlide{
totalNoOfImages=[copyOf_myGlobleArrayOfImageIds count];
if (imageCounter>=totalNoOfImages-1) {
imageCounter=0;
}
NSString *str = [NSString stringWithFormat:@"%@.jpg",[copyOf_myGlobleArrayOfImageIds objectAtIndex:imageCounter]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullImgNm=[documentsDirectory stringByAppendingPathComponent:[NSString stringWithString:str]];
//=(3*imageCounter+4)%25;
UIImage *img=[UIImage imageWithContentsOfFile:fullImgNm];
[mainSlideShowImageView setImage:img];
[mainSlideShowImageView setTag:[[copyOf_myGlobleArrayOfImageIds objectAtIndex:imageCounter] intValue]];
imageCounter++;
}
它是用定时器调用的(用于实现幻灯片放映),我如何在这一个中释放内存,从UIImage*img
和NSString*FullImageName
此外,如何确保在另一个图像加载到
imageView
后,上一个图像已从内存中释放?您询问的每个对象都不需要在自动释放时显式释放它们。可以看出它们是自动释放的对象,因为设置对象的方法不是以“alloc”、“new”、“copy”或“mutableCopy”开头的。你也没有保留任何一个
我建议您通读《内存管理编程指南》。它将帮助您了解在为iOS开发时如何管理内存
这两种方法都不需要为您提到的变量释放内存,因为它们使用提供自动释放实例的类方法 但是 您将在方法1中泄漏
UIImage*myImage=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]代码>
因为在那里你初始化了对象,从而获得了所有权。您需要在方法的末尾发布这个