Besoin d'aide pour corriger les deux dernières erreurs de mon programme

KassKass Membre
11:09 modifié dans API UIKit #1
Salut à  tous !
après quasi deux mois de développement, mon programme est quasiment terminé. Cependant, il reste deux petites erreurs à  corriger. Une concerne un warning, et l'autre un message qui s'affiche lorsque je debug et lance mon programme.

Erreur 1: un Warning
Avec IB j'ai inséré une UIImageView, afin d'afficher une image dedans à  partir de mon code.
Voici le code qui pose proglème:

<br />[image setImage:[[UIImage imageAtPath:[[NSBundle mainBundle] pathForResource:pays ofType:@&quot;png&quot; inDirectory:@&quot;/&quot;]] retain]];<br />[color=red]warning: &#39;UIImage&#39; may not respond to &#39;+imageAtPath:&#39;[/color]<br />


Pourtant ce code marche parfaitement ! J'ai essayé de faire des recherches, et tester d'autres codes, mais sans succès.



Erreur 2: un message s'affichant lors du lancement de l'application

Voici un message qui s'affiche dans la console, lorsque je fais un Build & go.

<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 />Program loaded.<br />sharedlibrary apply-load-rules all<br />Attaching to program: `/Users/Kass/Library/Application Support/iPhone Simulator/User/Applications/72A09917-A05A-4A03-98DE-15E61413356E/MonProgramme.app/MonProgramme&#39;, process 1275.<br />


Ce qui est bizarre c'est que ce message ne s'affichait pas au début, il est arrivé après environ 2 semaines de développement, puis en reparti entre temps, pour revenir il y a environ une semaine. C'est sur qu'en le lisant, on comprend sa provenance et tout, mais je n'ai aucune idée comment y remédier.
«1

Réponses

  • Philippe49Philippe49 Membre
    11:09 modifié #2
    imageAtPath n'existe pas,  prendre imageWithContentsOfFile

    De plus le retain est sans doute en trop car il y a de fortes chances que ta property image soit en mode retain. Dès lors le retain est fait dans le setter setImage:.
  • KassKass Membre
    11:09 modifié #3
    ah parfait ça marche impec avec cette methode !

    quelqu'un a une idée a propos de l'erreur n°2?
    ou bien est ce que je peux finaliser mon appli en ignorant ce message?


    merci !  ::)
  • Philippe49Philippe49 Membre
    11:09 modifié #4
    warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
    warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
    warning: Unable to read symbols for "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics" (file not found).
    warning: Unable to read symbols from "CoreGraphics" (not yet mapped into memory).

    Cela ça me ferait peur ...
    Pour qu'on te réponde il faut que tu en dises plus. La compilation marche quand même ?
  • Philippe49Philippe49 Membre
    11:09 modifié #5
    dans 1238257074:

    ah parfait ça marche impec avec cette methode !

    Ceci dit, c'était très facile à  partir du message d'erreur
    imageAtPath --> doc sur UIImage --> imageWithContentsOfFile 
  • KassKass Membre
    11:09 modifié #6
    dans 1238257866:

    dans 1238257074:

    ah parfait ça marche impec avec cette methode !

    Ceci dit, c'était très facile à  partir du message d'erreur
    imageAtPath --> doc sur UIImage --> imageWithContentsOfFile 


    Le truc c'est que j'ai vu tellement d'exemple différents utilisant imageAtPath, que je ne me suis même pas dit que la méthode n'existait vraiment pas. Je croyais juste avoir oublié quelque chose. Et en plus ça marchait tout de même!


    Sinon oui l'autre message me fait vraiment peur. La compilation marche sans soucis. Après plusieurs teste, ce message n'apparaà®t que lorsque que je compile dans le simulateur. A mon avis, il y a un problème avec les bibliothèques. Peut-être qu'il y a un problème avec mes bilothèques sur mon ordi, mais qu'une fois compilé sur l'iPod tout marche correctement ...
  • CeetixCeetix Membre
    11:09 modifié #7
    Bah en même temps sur le device il n'y a pas de console donc ça ne peut pas afficher le message, mais le problème est tjs là  je pense . Par contre pour le résoudre je laisse la main aux autres ^^
  • KassKass Membre
    11:09 modifié #8
    Heu chez moi la console marche sur le device. Enfin lors du premier lancement. Ensuite je sais pas si toutes les fonctionnalités y sont. Mais les NSLog ainsi que les messages d'erreurs lors de plantages et tout s'affichent.
  • Philippe49Philippe49 Membre
    11:09 modifié #9
    dans 1238258504:

    Le truc c'est que j'ai vu tellement d'exemple différents utilisant imageAtPath, que je ne me suis même pas dit que la méthode n'existait vraiment pas. Je croyais juste avoir oublié quelque chose. Et en plus ça marchait tout de même!

    c'est sans doute que ce n'était jamais appelé, parce qu'autrement à  moins d'une méthode non documentée, ce n'est pas possible.

    dans 1238258504:

    Sinon oui l'autre message me fait vraiment peur. La compilation marche sans soucis. Après plusieurs teste, ce message n'apparaà®t que lorsque que je compile dans le simulateur. A mon avis, il y a un problème avec les bibliothèques. Peut-être qu'il y a un problème avec mes bilothèques sur mon ordi, mais qu'une fois compilé sur l'iPod tout marche correctement ...

    Ce n'est pas normal.

    les #import <UIKit/UIKit.h> sont faits correctement ?
  • CeetixCeetix Membre
    11:09 modifié #10
    Ah ouai? J'ai jamais eu ça moi . Trop deg ... Et puis maintenant j'ai plus d'iphone sous la main .
  • NoNo Membre
    11:09 modifié #11
    dans 1238250538:

    Erreur 2: un message s'affichant lors du lancement de l'application
    Voici un message qui s'affiche dans la console, lorsque je fais un Build & go.
    <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 />Program loaded.<br />sharedlibrary apply-load-rules all<br />Attaching to program: `/Users/Kass/Library/Application Support/iPhone Simulator/User/Applications/72A09917-A05A-4A03-98DE-15E61413356E/MonProgramme.app/MonProgramme&#39;, process 1275.<br />
    

    Ce qui est bizarre c'est que ce message ne s'affichait pas au début, il est arrivé après environ 2 semaines de développement, puis en reparti entre temps, pour revenir il y a environ une semaine. C'est sur qu'en le lisant, on comprend sa provenance et tout, mais je n'ai aucune idée comment y remédier.


    Ce sont les messages typiques du lancement de GDB au moment du lancement de l'appli du projet.
    Les warnings "unable to read..." sont normaux, car GDB se lance avant l'exécutable, ce qui fait que un certain nombre de bibliothèques ne sont pas encore totalement chargées.

    Ceci apparaà®t quand tu exécutes ton projet en mode debug (menu Build > Build and Debug, ou menu Run > Debug).

    Il n'y a donc pas lieu de t'inquiéter.
  • Philippe49Philippe49 Membre
    11:09 modifié #12
    Jamais vu ce genre de message en mode Debug ...
  • Philippe49Philippe49 Membre
    11:09 modifié #13
    Je crois que j'ai trouvé une piste

    warning: Unable to read symbols for "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics" (file not found).

    Pour une application iPhone, ce n'est pas la bonne localisation du framework.
    Refais le chargement des frameworks, ils sont à  prendre dans
    Developer/Platforms/iPhoneOSPlatform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks
  • KassKass Membre
    11:09 modifié #14
    Ah d'accord je vais essayer ça.

    Le truc aussi c'est que j'ai du ajouter a un moment la bibliothèque CoreGraphics, alors qu'il y en avait deja une mais ca ne marchait pas. Donc là  j'en ai deux maintenant. Je vais essayer de refaire l'import.
  • KassKass Membre
    11:09 modifié #15
    Bon j'ai supprimé les 2 CoreGraphics que j'avais, puis rajouté une seule fois.
    Le même message d'erreur apparaà®t. J'ai l'impression qu'il veut a tout prix trouver les Framework dans mon dossier System. mais ils y sont pas dedans. Est ce que c'est vous ils y sont?

    dans: /System/Library/Frameworks/
  • Philippe49Philippe49 Membre
    11:09 modifié #16
    Ce que je peux dire c'est que le framemork CoreGraphics pour une utilisation iPhone est localisé ici :
    /Developer/Platforms/iPhoneOSPlatform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks/CoreGraphics.framework

    Il n'y en a pas dans /System/Library/Frameworks/




  • KassKass Membre
    11:09 modifié #17
    J'ai remarqué une chose.

    lorsque je clique droit sur ma librairie CoreGraphics, dans la fenêtre qui arrive il y a:

    Path: System/Library/Frameworks/CoreGraphics.framework

    Full Path: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/System/Library/Frameworks/CoreGraphics.framework

    Mais quand je veux changer le chemain de Path, rien ne se passe ...

    Lors de l'import, pour Path Type j'ai choisi Relative to current SDK, c'est juste?
  • Philippe49Philippe49 Membre
    11:09 modifié #18
    Le path indiqué est relatif à  la plateforme, traduit par le full path

    Tu as quoi comme active target dans la tool bar ?

    dans 1238263409:

    Lors de l'import, pour Path Type j'ai choisi Relative to current SDK, c'est juste?

    Cela enregistre le chemin d'accès du fichier différemment, soit ici Path: System/Library/Frameworks/CoreGraphics.framework dans le répertoire du SDK courant et cela te donne le full path 
  • KassKass Membre
    11:09 modifié #19
    Tu parles de l'onglet Target de la fenêtre get Info?

    si c'est ça j'ai le nom de mon programme avec la case devant cochée. C'est tout.
  • Philippe49Philippe49 Membre
    11:09 modifié #20
    Je parle de l'active SDK
  • KassKass Membre
    11:09 modifié #21
    ah d'accord. C'est le Simulator - iPhone OS 2.2

    Je n'ai pas encore le 2.2.1, je l'ai lancé à  télécharger cet aprem, mais il estime encore 7h de téléchargement .....
  • Philippe49Philippe49 Membre
    11:09 modifié #22
    A mon avis le noe“ud est dans un truc comme cela :

    dans 1238261344:

    Le truc aussi c'est que j'ai du ajouter a un moment la bibliothèque CoreGraphics, alors qu'il y en avait deja une mais ca ne marchait pas. Donc là  j'en ai deux maintenant. Je vais essayer de refaire l'import.


    qui fait que tu as du mettre en place quelque chose de foireux qui n'a pas été nettoyé après.
    Parce que ce que dis No est logique, mais on le verrait apparaà®tre souvent, ce qui n'est pas le cas.

    1) Tu as essayé de nettoyer ton projet ( build > Clean All Targets, supprimer le répertoire Build )  ?
    2) Tu as regardé le panel Build des infos de ton projet pour voir si il n'y  arien de suspect ?
  • KassKass Membre
    11:09 modifié #23
    J'ai déjà  tout essayé, avec les clean all, supprimer le dossier build ...

    j'ai regardé aussi dans le panel build des informations, et rien de bizarre de detecté .... Je sais pas is je trouverais la réponse a ce problème un jour.
  • AliGatorAliGator Membre, Modérateur
    mars 2009 modifié #24
    Je confirme quand on dev pour iPhone, il suffit de brancher le device sur le Mac, puis de passer en configuration "Device - Debug" et de lancer le debug, et on voit les traces dans la console même alors que l'appli s'exécute sur le device et non dans le simulateur.

    Sinon heu rassure toi, j'ai les mêmes erreurs dans ma console quand je développe pour iPhone avec Xcode. Et ce depuis un bail.
    Le débogueur n'arrive pas à  trouver les frameworks UIKit et CoreGraphics (et donc à  charger leurs symboles) chez moi non plus.

    J'en étais arrivé à  la conclusion que vous évoquez aussi plus haut : il essaye de charger les frameworks dans /System/Library/Frameworks (qui est le chemin classique des Frameworks sur mac, mais aussi le chemin classique des frameworks sous iPhone... sur le device (du moins je pense ?), mais n'est pas le bon chemin quand on développe sur simulateur, puisque dans ce cas il faut aller chercher les frameworks dans le dossier du SDK.

    J'ai vérifié moi aussi, mes frameworks dans mon projet ont bien un path "relative to current SDK" et pointent bien dans le dossier Frameworks du SDK... mais je pense que c'est gdb qui ne doit pas réussir à  retrouver ses petits.
    j'avais essayé de jouer avec les commandes gdb pour charger à  la main les symboles de ces frameworks, ainsi que modifier le path (une variable d'environnement utilisée par GDB pour chercher les frameworks, un peu comme la variable PATH mais dédiée à  gdb, me souviens plus de son nom) mais ça n'avait pas l'air de l'affecter...

    Donc si vous trouvez la solution je suis prenneur aussi, d'une part pour comprendre d'où ça vient, mais surtout pour aussi avoir les symboles dans le débugueur pour ces frameworks qd on débug l'appli... et pour se rassurer de se dire qu'il charge bien tous les frameworks.

    NB : Depuis que je programme sur device j'ai pas fait gaffe si ces 2 warnings (que j'ai fini par avoir l'habitude de voir à  force donc à  un peu oublier qu'ils sont là ) sont présents dans le cas d'un remote debugging, mais une chose est sûre ils sont présents dans le cas d'un débogage sur simulateur.
  • AliGatorAliGator Membre, Modérateur
    11:09 modifié #25
    PS : Quand on recherche de toute façon ce warning dans google on voit bien qu'on est pas tout seuls ^^

    J'avais déjà  un peu fouillé voir si certains avaient trouvé la solution à  l'époque (y'a déjà  qques mois), mais j'ai pas trouvé grand chose. J'avais dû coup cherché dans la doc de gdb me disant que c'était un problème de path, avait trouvé une ou 2 infos sur une variable à  renseigner pour indiquer les chemins où rechercher les symboles, mais n'avais pas réussi à  bien l'utiliser sûrement (suis pas un expert de gdb) donc avait pas creusé plus loin... faudrait creusé plus loin^^
  • NseaProtectorNseaProtector Membre
    11:09 modifié #26
    As tu décoché 'load symbols lazily' dans les préférences d'Xcode ?
    C'est juste une idée ...
  • Philippe49Philippe49 Membre
    11:09 modifié #27
    Ce mini-essai ne présente pas le message.
    Par contre le projet sur lequel je testais hier, et qui ne le présentatit pas, le présente ce matin ? Ali tu fous la poisse ou quoi ?

    @NseaProtector Réglages de XCode
  • Philippe49Philippe49 Membre
    11:09 modifié #28
    Entre celui qui s'est mis à  bogguer aujourd'hui après (un crash de XCode) et celui qui ne présente toujours pas de message d'erreurs, j'ai une ligne présente dans le second (le bon) qui est absente dans le premier
    Dans Les infos Build >Deployment > IPhoneOS Deployment Target
  • KassKass Membre
    11:09 modifié #29
    Ce problème est vraiment bizarre.

    Dans les préférences Xcode, "load symbols lazily" était chez moi coché, j'y ai décoché, mais cela n'a rien changé.

    Ensuite dans les infos Build, j'ai la même chose que Philipe49 sur son dernier screenshot.
  • Philippe49Philippe49 Membre
    11:09 modifié #30
    dans 1238318703:

    Entre celui qui s'est mis à  bogguer aujourd'hui après (un crash de XCode) et celui qui ne présente toujours pas de message d'erreurs, j'ai une ligne présente dans le second (le bon) qui est absente dans le premier
    Dans Les infos Build >Deployment > IPhoneOS Deployment Target


    Je rajoute cette option au premier, .. et ça remarche. Serait-ce la solution ?
  • AliGatorAliGator Membre, Modérateur
    mars 2009 modifié #31
    1) Mon "load symbols lazily" est décoché, depuis récemment (quelques semaines), et pourtant j'ai toujours ces warnings dans gdb que j'avais avant et ait encore maintenant
    2) Dans Build -> Deployment j'ai bien la même chose que Philippe49 aussi : "iPhone OS Deployment Target" qui n'est pas redéfini par rapport au défaut et affiche donc dans les build settings du projet "iPhone OS 2.2.1" (mais si je double-clique sur la ligne c'est vide)
    3) En double-cliquant sur cette clé "iPhone OS Deployment Target" (qui de son vrai nom non traduit est en fait la clé IPHONE_OS_DEPLOYMENT_TARGET en effet), si au lieu de la valeur vide (sous-entendant valeur par défaut) je tape explicitement "iPhone OS 2.2.1"... ça change rien.
    4) Si j'essaye comme Philippe de rajouter une "user defined" avec ce nom "IPHONEOS_DEPLOYMENT_TARGET" il me le refuse en me disant qu'il existe déjà  une clé avec ce nom, ce qui est exact puisqu'elle est déjà  défini dans le groupe "Deployment" en effet.

    Donc je confirme bien, ces warnings ne s'affichent que quand (1) le déboggueur se lance, normal ce sont des warnings de gdb qui veux nous informer qu'il n'a pas, lui, réussi à  charger les symboles de ces frameworks, mais ce n'est pas un message du linker dynamique, et (2) quand on développe pour une plateforme autre que OSX, j'ai nommé l'iPhone, pour lequel le chemin du SDK est le chemin futur pris sur le le device (/System/Library/Framework) alors que quand on est en environnement de dev et avec le simulateur, il faudrait que gdb aille chercher les symboles dans le répertoire du SDK.

    Notez que ces warnings n'ont pour moi rien d'inquiétant, ils sont juste un peu gênants : comme je l'ai dit ce ne sont pas des warnings du dynamic linker (qui voudrait nous dire qu'au moment de lancer/excuter l'application, y'a des bibliothèques dynamiques qu'il ne trouve pas) mais bien un message de gdb, ce qui veux juste dire qu'on n'aura pas les symboles de debug pour ces frameworks donc qu'on ne pourra pas avoir les noms explicites des méthodes de ces frameworks dans la callstack par exemple typiquement. Mais si on demande via la commande gdb adéquate de charger les symboles de ces frameworks en lui donnant le chemin complet (dans le répertoire du SDK) une fois qu'il est lancé, ça devrait être bon je pense.

    Mais l'idéal serait de trouver le réglage de GDB (variable d'environnement, fichier de réglage, build settings à  modifier/rajouter...?) pour lui rajouter ce chemin qqpart pour lui indiquer où aller chercher les symboles des frameworks, ou de comprendre pourquoi il ne trouve pas tout seul le bon chemin.




    PS : Attention Philippe49, quand tu parles plus haut d'avoir parfois réglé le problème, je ne pense pas que ce soit le cas, comme le témoigne ta capture "Image3.png" plus haut : en effet dans le cas de ta capture, tu as manifestement lancé ton application avec "Build & Go" et donc sans l'attacher au débogueur. D'ailleurs on voit bien le classique "Session started" mais on voit que gdb ne s'est pas lancé. Bien évidemment, moi aussi quand je fais un Pomme-R ça me fait ça, j'ai jamais le warning, logique puisque c'est gdb qui dit ce warning donc tu ne l'auras que quand ce dernier se lancera, soit en faisant un Pomme-Y ("Build & Debug"), soit en plaçant un breakpoint et en attendant qu'il soit atteint... là  gdb va se charger, et en guise de bienvenue va t'afficher les warnings indiquant qu'il n'a pas trouvé les symboles de debug pour ces 2 frameworks.
    Mais sinon moi quand je lance mon programme normalement (Pomme-R / Build & Go), des OSX ou iPhone sur simulateur ou device réel, tant que gdb ne se lance pas j'ai pas ces warnings indiquant qu'il n'a pas trouvé les symboles de debug, normal quoi.
Connectez-vous ou Inscrivez-vous pour répondre.