f*cking bug sur prise de photo

guittonewsguittonews Membre
04:24 modifié dans API UIKit #1
Rebonjour tout le monde :)

Mon appli avance bien et je suis dans la dernière ligne droite et ce grace à  vous :)

Mais cela fait quelques heures que je galère sur un truc.

Mise en situation : j'ai une arborescence de table view et a chaque extremités de l'arborescence j'ai une vue dans laquelle je peux ecrire du texte et/ou prendre une photo.

En restant sur la même extremité : Je peux prendre une photo, l'envoi au WS marche nikel. Une seconde photo, toujours nikel. Une troisième, toujo...PLANTAGE!

Autre parcours utilisateur : il se balade de "feuille" en "feuille" (extremités d'un arbre quoi :D ) et prends une ou deux photos par feuille. Il peut même revenir sur une feuille pour laquelle il avait déjà  pris deux photos. Puis à  un moment il s'arrete, admire la vue et décide de prendre une 3ème photo...ce qui à  l'air d'être un peché mortel dans le monde de mon appli...

J'ai cette erreur (qui ne me parle pas du tout...) :
[Session started at 2009-04-23 17:41:45 +0200.]<br />Loading program into debugger...<br />GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)<br />Copyright 2004 Free Software Foundation, Inc.<br />GDB is free software, covered by the GNU General Public License, and you are<br />welcome to change it and/or distribute copies of it under certain conditions.<br />Type &quot;show copying&quot; to see the conditions.<br />There is absolutely no warranty for GDB.&nbsp; Type &quot;show warranty&quot; for details.<br />This GDB was configured as &quot;i386-apple-darwin&quot;.<br />warning: Unable to read symbols for &quot;/System/Library/Frameworks/UIKit.framework/UIKit&quot; (file not found).<br />warning: Unable to read symbols from &quot;UIKit&quot; (not yet mapped into memory).<br />warning: Unable to read symbols for &quot;/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics&quot; (file not found).<br />warning: Unable to read symbols from &quot;CoreGraphics&quot; (not yet mapped into memory).<br />warning: Unable to read symbols for &quot;/System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation&quot; (file not found).<br />warning: Unable to read symbols from &quot;CoreLocation&quot; (not yet mapped into memory).<br />Program loaded.<br />sharedlibrary apply-load-rules all<br />Attaching to program: `/Users/celinesalomon/Library/Application Support/iPhone Simulator/User/Applications/004059C0-9252-4309-9446-2E981C8EE938/speedsmos.app/speedsmos&#39;, process 2395.<br />


Merci pour votre patience :)

Réponses

  • muqaddarmuqaddar Administrateur
    04:24 modifié #2
    Tu devrais mettre des NSLogs et des breakpoints, sinon ça va être coton je pense.
  • guittonewsguittonews Membre
    04:24 modifié #3
    j'ai fait un passage full breakpoint (enfin presque full...) et ca me lache ici :

    -(IBAction)takePhoto:(id)sender{<br />	[self presentModalViewController:self.imgPicker animated:YES];<br />}
    


    sachant que j'ai ca dans mon viewDidLoad :
    self.imgPicker = [[UIImagePickerController alloc] init];<br />	self.imgPicker.allowsImageEditing = NO;<br />	self.imgPicker.delegate = self;		<br />	//set up as the camera source<br />	if([UIImagePickerController isSourceTypeAvailable:SOURCETYPE]){<br />		self.imgPicker.sourceType=SOURCETYPE;<br />	}<br />	<br />	//just snap here. Although you can easily add image editing if you want<br />	self.imgPicker.allowsImageEditing=YES;<br />	<br />	self.imgPicker.delegate=self;<br />
    


    (je change le sourceType suivant que je suis sur le device (apn) ou sur le simulateur (gallerie photo) mais le comportement est le meme)

  • AliGatorAliGator Membre, Modérateur
    04:24 modifié #4
    Le log que tu nous cites (le "message d'erreur" n'en est pas un, c'est juste les traces qui témoignent que GDB (le debuggeur) s'est lancé (avec qques infos de copyright sur GDB ainsi que quelques warnings qui n'ont pas d'incidence sur ton problème)... Mais il n'affiche aucun message d'erreur comme moi il ne répond pas à  une méthode ou qu'il essayes d'accéder à  un élément qui a été détruit ou je ne sais quoi...

    Du coup, surtout vu le use case que tu décris pour reproduire le bug, je pense (voire je suis sûr) que c'est un problème mémoire : ton appli ne lâche pas assez de ressources, tu gardes sans doute trop de choses en mémoire. Il ne faut pas oublier que l'iPhone est un device mobile, et que si on peut éviter de garder en mémoire de gros trucs volumineux, il faut éviter.

    Or là  tu prends des photos... donc tu récupères des UIImages... qui sont plutôt énormes ! La doc du UIImagePickerController t'indique bien d'ailleurs qu'il est conseillé ensuite de redimentionner les images obtenues par l'appareil photo, au moins pour l'affichage... mais en plus si toi tu en prends plusieurs, et les garde toutes en mémoire... tu vas vite arriver à  saturation.
    En plus je ne suis pas persuadé que dans l'appli que tu veux faire, il soit utile d'envoyer à  ton WE la version "grande taille" de la photo prise, si ?
    Parce que sinon faut mieux réduire l'UIImage récupérée, et ne garder que la version réduite de l'UIImage, et relâcher la version "grande taille".
    Quitte d'ailleurs à  la recharger plus tard.
  • guittonewsguittonews Membre
    04:24 modifié #5
    en effet j'ai pensé à  ca aussi. Parce qu'en fait je ne souhaite pas garder les photos sur le device, donc a priori une fois que l'image est envoyée au WS et que le delegate du UIPicker est fini les images "n'existent" plus, si?
Connectez-vous ou Inscrivez-vous pour répondre.