Fin d'une application

AdamAdam Membre
04:20 modifié dans Vos applications #1
Bonjour,

Je me permet une dernière fois de poster sur ce forum.
J'ai enfin fini mon application. Tout au long de mon développement, j'utilisais régulièrement instruments pour tester mes problèmes de leaks.
Et je faisais assez attention d'ou provenait mes leaks, afin de les réparer.
Mais j'avais toujours quelques leaks avec lesquels je n'arrivait pas à  savoir d'ou sa provenait.
Donc je les ai mis de coté, jusqu'à  ce jour.
Maintenant j'essaye de réparer et de voir d'ou ça peut provenir.

J'ai beaucoup de leaks et dans Stack Trace, soit ça me met "no Stack...", soit ça me renvoie vers des fichiers que je connait pas (je pense que c'est des fichiers systèmes)
Capture-d-ecran-2011-05-23-a-15.03.35.png

Voila sur le genre du programme que ça me renvoie quand il y a quelque chose dans Stack Trace (exemple CFAllocatorSytemAllocate) :
Capture-d-ecran-2011-05-23-a-15.04.06.png

Merci de votre aide

Réponses

  • AdamAdam Membre
    04:20 modifié #2
    Après quelques recherches, j'ai remarqué que ça viens quand je charge une webView.
    Mais je ne comprends pas pourquoi.
    voici mon code :
    <br />&nbsp; myWebView=[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];<br />&nbsp; &nbsp; myWebView.backgroundColor=[UIColor whiteColor];<br />&nbsp; &nbsp; myWebView.scalesPageToFit= YES;<br />&nbsp; &nbsp; [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:siteWeb]]];<br />&nbsp; &nbsp; self.view =nil ;<br />&nbsp; &nbsp; self.view = myWebView;<br />&nbsp; &nbsp; [myWebView setDelegate:self];<br />
    


    Semble t-il avoir des erreurs ?
  • BunoBuno Membre
    04:20 modifié #3
    Hello,
    dans 1306245061:

    <br />&nbsp; &nbsp; self.view =nil ;<br />&nbsp; &nbsp; self.view = myWebView;<br />
    


    C'est normal de remettre la vue à  nil ici? C'était quoi comme vue? Elle n'est pas déallouée...
  • iSofTomiSofTom Membre
    04:20 modifié #4
    Ben soit l'attribut view est en retain et du coup la vue qui était là  est bien releasée, par contre myWebView est retained deux fois (il faudrait un release après le self.view = myWebView). Soit l'attribut view est en assign et du coup myWebView est retenue comme il faut, mais la vue qui était là  avant n'est pas releasée (il faudrait [self.view release] avant self.view = nil)
  • AdamAdam Membre
    mai 2011 modifié #5
    Merci pour vos réponse.
    Cette View, juste avant le passage à  nil contient la WebView
    je met ma view à  nil avant de la releaser, sinon sa marche pas. J'ai un BAD_EXC..

    C'est ma vue actuelle, donc elle n'est pas déclarée dans le .h (je n'ai pas de property).

    Si je fait un release de view avant self.view=nil. Ou un release de myWebView apres self.view=myWebView, dans les 2 cas l'application plante.
  • BunoBuno Membre
    04:20 modifié #6
    Essaie avec un [self setView:myWebView], sans la mettre à  nil
  • AdamAdam Membre
    04:20 modifié #7
    Merci, Quand j'essaye cette solution, l'application ne plante pas. Mais j'ai toujours les generalBlock dans Instruments...

    J'ai entendu dire que c'était à  cause de certains sites qui se servent du javaScript (donc ça génère des fuites de mémoire) . Vous en pensez quoi ?
  • BunoBuno Membre
    04:20 modifié #8
    No idea...
    Par contre, une question: pourquoi tu recrée une nouvelle webview à  chaque coup, plutôt que de changer l'url?
  • AdamAdam Membre
    mai 2011 modifié #9
    Parce que j'ai un navigationController. Et mon url est chargé une fois la page lancée...
    Pour charger une autre URL, il faut relancer la page.

    Pour être plus précis, je vais mettre mon code :
    Dans le .h, je déclare ma webView (sans @property)
    <br /> UIWebView *myWebView;<br />
    


    Dans le .m, je m'en sert à  plusieurs endroit :
    -ViewDidLoad :
    <br />//Charger un contenu web depuis internet<br />&nbsp; &nbsp; myWebView=[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];<br />&nbsp; &nbsp; myWebView.scalesPageToFit= YES;<br />&nbsp; &nbsp; myWebView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);<br />&nbsp; &nbsp; [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:siteWeb]]];//On reprend le siteWeb <br />&nbsp; &nbsp; [self setView:myWebView];<br />&nbsp; &nbsp; [myWebView setDelegate:self];<br />&nbsp; &nbsp; //[myWebView release]; Si je le met, j&#039;ai une erreur<br />
    


    -webViewDidFinishLoad:
    <br />[myWebView stopLoading];<br />
    


    -viewWillDisappear:
    <br />[myWebView stopLoading];<br />
    


    -dealloc :
    <br />[myWebView release];<br />
    


Connectez-vous ou Inscrivez-vous pour répondre.