J'ai eu un gros problème de performance en utilisant UIImagePickerController
et en sauvegardant l'image sur le disque. Je ne peux pas comprendre ce que je fais mal. Voici mon code:UIImagePickerController à court de mémoire avec la source de la caméra
- (void)imagePickerController:(UIImagePickerController *)pick
didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
iPixAppDelegate *delegate = (iPixAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate addPicture:imageData];
}
La méthode addPicture
crée un nouvel objet image qui est initialisé cette façon:
- (Picture*) initPicture:(NSData*)dat inFolder:(NSString*)pat {
self.data = dat;
NSDate *d = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-mm-dd hh-mm-ss"];
self.name = [[formatter stringFromDate:d] stringByAppendingString:@".png"]; //The name by default of a picture is the date it has been taken
[formatter release];
self.path = [pat stringByAppendingPathComponent:self.name];
if(![self fileExistsAtPath:self.path]){
[self.data writeToFile:self.path atomically:YES];
}
return self;
}
Le UIImagePickerController
est assez rapide mais le programme devient très lent lorsque j'enregistre l'image sur la disque.
Une idée de ce que je fais mal?
cela m'aide tellement. Merci. Je pense que ce bogue se produit lorsque l'appareil est dans l'état 'near-be-full'. –