UIImageWriteToSavedPhotosAlbum de travail... parfois
UIImageWriteToSavedPhotosAlbum ne fonctionne parfois. Parfois cela fonctionne, parfois cela ne fonctionne pas, exactement la même fonction.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }
Je suis à l'aide d'un UIImagePicker contrôleur pour obtenir l'image qui appelle cette fonction.
Parfois, il l'enregistre dans la pellicule, d'autres fois il n'a tout simplement pas.
Quelqu'un a une idée?
Merci d'avance.
Edit:
La méthode d'achèvement pour UIImageWriteToSavedPhotosAlbum parfois renvoie une erreur:
wait_fences: failed to receive reply: 10004003
Peu plus de détails s'il vous plaît, un message d'erreur? Êtes-vous sûr que l'image n'est pas nul? La méthode est en fait appelée? Toutes les autres procédures de dépannage que vous avez fait?
Oui il est appelé, pour sûr, il enregistre ces NSLogs. Et non, l'image ne peut pas être nul, comme c'est parfois le sauve d'autres fois, il ne fonctionne tout simplement pas.
Avez-vous résolu le problème ? J'ai la même...
Nope, je n'ai pas. Jamais regardé plus tbh.
Oui il est appelé, pour sûr, il enregistre ces NSLogs. Et non, l'image ne peut pas être nul, comme c'est parfois le sauve d'autres fois, il ne fonctionne tout simplement pas.
Avez-vous résolu le problème ? J'ai la même...
Nope, je n'ai pas. Jamais regardé plus tbh.
OriginalL'auteur EduAlm | 2010-06-10
Vous devez vous connecter pour publier un commentaire.
Je voudrais commencer par l'ajout d'un achèvement cible méthode de l'enregistrer en appel pour voir si elle est de produire des erreurs. Voir la
UIImageWriteToSavedPhotosAlbum
la documentation pour plus de détails.Edit:
Cela signifie que l'opération a expiré. Il existe plusieurs causes à cela:
didReceiveMemoryWarning
pour voir si cela est la cause.Je pense que (1) le plus probable et explique la nature intermittente. Lorsque vous avez assez de mémoire que la méthode fonctionne et quand vous ne le faites pas, il échoue.
En outre, lorsque vous compilez, résoudre tous les avertissements qui viennent. Ce sont juste des erreurs à ne pas apparaître jusqu'à ce que l'exécution. Vous êtes problème pourrait être répertoriées
Voir mon edit pour plus d'idées.
Un ami l'a testé sur son 3GS et c'est la même chose. Ma demande n'est pas la consommation de mémoire du tout donc je ne pense pas que cela devrait être la cause. Je vais essayer de la mettre quand même pour voir si il donne à toute la mémoire d'avertissement. (Et non, il n'y a aucun avertissements de compilation.)
Ne présumez pas à propos de l'utilisation de la mémoire. de Test. L'une des faiblesses de l'Objective-C est que des erreurs peuvent créer des fuites de mémoire. Si ce n'est pas de mémoire, puis la suivante la plus probable du problème est une corruption de l'image. Si vous êtes à la prendre directement à partir de l'appareil photo je ne sais pas comment ça pourrait arriver. Je voudrais essayer de sauver une image de test à la place de celui retourné par le sélecteur d'images pour essayer d'isoler le problème.
Sur une application de fonctionner, j'ai pris 4 photos, 3 enregistré correctement, et un autre n'a pas et a déclenché un avertissement de mémoire. Sur la deuxième manche... j'ai pris 7 photos, 2 enregistré correctement, pas d'erreurs, pas de mémoire les mises en garde.
OriginalL'auteur TechZen
Espère que cette réponse n'est pas trop tard pour être utile. J'ai rencontré exactement le même problème. Il s'avère que le problème est double. Tout d'abord, l'image ne doivent être conservés avant d'être envoyé à UIImageWriteToSavedPhotosAlbum. D'autre part, sur pré-iPhone4 appareils cette fonction peut prendre un loooooong moment de faire sa chose. Le correctif que j'ai trouvé est de mettre en œuvre une fonction de rappel. Consultez la documentation de UIImageWriteToSavedPhotosAlbum à ce sujet. La fonction doit être dans le format correct, vous ne pouvez pas utiliser n'importe quel vieux de la fonction. Dans cette fonction, assurez-vous de relâcher l'image que vous avez retenu ou vous aurez une fuite de mémoire. Vous pouvez également l'utiliser pour garder une trace de quand les images sont fait enregistrer. Voici mon code de base ci-dessous:
OriginalL'auteur Dancreek