I’m trying to do a simple thing; read an image from the internet, save it to the app’s documents directory on the iphone, and read it back from that file so that i can do other things with it later. Writing the file works fine but when i try to read it back i get an EXC_BAD_ACCESS error in GDB that i have no idea how to resolve. Here is what my code basically looks like:
-(UIImage *) downloadImageToFile { NSURL * url = [[NSURL alloc] initWithString: self.urlField.text]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; [paths release] NSString * path = [documentsDirectory stringByAppendingString:@'/testimg.png']; NSData * data = [[NSData alloc] initWithContentsOfURL:url]; [data writeToFile:path atomically:YES]; return [[UIImage alloc] initWithContentsOfFile:path]; }
The code fails in the return statement when i try to initialize the UIImage from the file. Any ideas?
Edit: neglected to add a release that was the problem in the code originally.
Your code shows a severe lack of knowledge of how memory management works in Objective-C. In addition to the EXC_BAD_ACCESS errors you’re receiving, improper memory management also causes memory leaks which, on a small device like the iPhone, can lead to random crashes.
I recommend you give this a thorogh read:
Introduction to Memory Management Programming Guide for Cocoa