2010-07-20 2 views
0

Je crée des fichiers temporaires dans le simulateur d'iPad. Pour tester la création de mon fichier, je crée le fichier puis le relire. Voici un code pour montrer ceci:État de la course (?) Dans iPhone Temp Fichier d'écriture

-(NSString *) writeToTempFile:(UIImage*) image{ 
NSString *path = [self createTemporaryFile]; 
NSLog(@"path: %@", path); 
NSData *data = UIImageJPEGRepresentation(image, 1); 
[data writeToFile:path atomically:YES]; 
free(data); 
return path; 
} 

-(UIImage *) readTempFile:(NSString *) path{ 
NSData *data = [[NSData alloc] initWithContentsOfFile:path]; 
UIImage *image = [[UIImage alloc] initWithData:data]; 
return image; 
} 

J'appelle ces méthodes un après l'autre, avant une dernière fonction écrit le UIImage à l'album photo.

UIImageWriteToSavedPhotosAlbum(image2, self, nil, nil); 

Le problème est, ce toujours se bloque mon application sur la troisième fois qu'il est exécuté. Première et deuxième fois, il réussit tout cela et stocke dans l'album. La troisième fois il se bloque à la maison. Des idées?

Répondre

6
NSData *data = UIImageJPEGRepresentation(image, 1); 
[data writeToFile:path atomically:YES]; 
free(data); 

Le NSData retour de UIImageJPEGRepresentation est -autorelease d. Il n'y a pas besoin de free(). Et c'est mauvais à free() des objets Objective-C - envoyer un message -release à la place.

Veuillez lire le Memory Management Programming Guide.

+0

Merveilleux. Merci un paquet! – mtrc

Questions connexes