probleme dans mon application apres lancement de plusieurs application
paddev
Membre
Bonjour,
Je viens de finir mon application qui marche tres bien quand je la lance toute seule.
Je teste sur ipod (128 de ram).
Si je lance d'autres appli, genre 5 ou 6 ( appli d'infos(lemonde,..) ,etc) et que je retourne sur la mienne , au bout d'un moment elle merde ( fond qui n'apparait plus).
Est ce que cela vient du fait que n'ayant que 128 mo de ram , au bout d'un moment l'ipod veuille faire de la place?
car les autres appli que j'ouvre n'ont pas ce probleme.
Avez vous deja eu ce probleme?
merci
Je viens de finir mon application qui marche tres bien quand je la lance toute seule.
Je teste sur ipod (128 de ram).
Si je lance d'autres appli, genre 5 ou 6 ( appli d'infos(lemonde,..) ,etc) et que je retourne sur la mienne , au bout d'un moment elle merde ( fond qui n'apparait plus).
Est ce que cela vient du fait que n'ayant que 128 mo de ram , au bout d'un moment l'ipod veuille faire de la place?
car les autres appli que j'ouvre n'ont pas ce probleme.
Avez vous deja eu ce probleme?
merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- Relis ton code et la façon dont tu gères la mémoire
- Utilise les outils adaptés : l'analyse statique (Clang Static Analyzer -- soit via l'outil "Build & Analyze" de Xcode3 soit via le scheme adéquat dans Xcode4), Instruments pour tracker les leaks, etc.
En fait j'utilise ARC donc deja je ne m'occupe pas des retain et release.
Donc Je reçois en fait un ReceiveMemoryWarning.
Pourtant mon appli ne fait que 8mo.
J'ai fait un analyse, il n'y as aucun souci?
D'ou peut venir le probleme?
C'est vraiment pas evident de trouver...mais je persevère!
Ton application reçoit un ReceiveMemoryWarning quand iOS manque de place. Cela veut dire "SVP, tu ne peux pas libérer un peu de mémoire ?". Les autres applications en reçoivent aussi et doivent (théoriquement) faire de la place. Le système a du effacer ton image de fond pour gagner quelques Ko. A toi de prévoir un mécanisme de recyclage pour la recharger.
Ceci dit, cette génération de machine est obsolète, tu sais. iOS 5 ne tournera jamais dessus. La mémoire centrale est vraiment trop faible et la puce vidéo ne supporte pas les shaders. Mine de rien, les shaders sont très importants pour les applications mobiles, en effectuant des traitements graphiques sur la puce vidéo, indépendamment du processeur central.
Que veut tu dire dire par mecanisme de recyclage pour recharger l'image? En fait c'est l'image de fond de ma tableView de l'onglet "more".(j'ai crée une class tabBar).
J'ai testé avec instrument et il indique rien, juste 2,3 petits drapeaux noirs quand je lis une vidéo mais pas de leak.
Bref je suis un peu perdu...
Merci a vous quand même pour les pistes!
Alors après tu n'as peut-être pas de leak. Mais ça n'empêche pas que tu dois gérer la mémoire quand tu reçois un MemoryWarning (qui est envoyé quand ton appli n'a plus bcp de mémoire dispo et demande "help laisse moi un peu de place STP !"). Genre si tu reçois un memory warning qui fait qu'il va libérer l'image de fond, quand tu reviens dans ton app si l'image a été libérée tu la recharges, etc.
Mais a part un probleme de release (qui sont du coup gerer par ARC) je ne vois pas comment gerer la mémoire vu que j'ai pas de leak surtout que mon appli fait que 8mo...
Dans mon appli j'ai des actus appelé via un parser xml, une carte, des photos et videos.(precision: aucune des photos et videos sont dans l'appli , elles sont hebergé sur un serveur et sont leur lien sont dans un fichier xml)
je ne comprend pas pourquoi j'ai un receivememorywarning du coup vu que je n'ai pas de leak..
Quand je fais instrument la j'ai bien un leak dans le fichier de mon parser TBXML..
j'ai ceci:
et voici les leaks dans le fichier TBXML:
Et dans mon eleazardelegate, une fonction que j'appelle dans application didFinishLaunchingWithOptions pour verifier que mon fichier xml n'a pas été modifié:
Voila ca m'avance pas plus!
si quelqu'un voit le souci
je met genre imageview=nil?
autre precision je fais tout en code je ne me sert pas de interface builder.
Sachant que je travaille avec ARC je ne fais pas de release d'objet.
Par contre est ce que je dois mettre tous mes objets a nil dans l dealloc et viewdid unload, genre:
je crée un label et une vue dans le viewdidload:
UIView *vue=[UIView alloc] initWith...
UIlabel*label=[UIlabel alloc]..
[vue addSubview:label];
dealloc{
vue=nil;
label=nil;
}
viewDidUnload{
vue=nil;
label=nil;
}
j'ai lu qu'il fallait mettre les objets a nil que si ils ont été fait avec interfaceBuilder mais je ne travaille quand code.
Merci pour votre explication car cela pourra vraiment m'aider