Quelles sont les bonnes pratiques de debugging ? Comment vérifier qu'il n'y a pas de fuite mémoire ? Que tous les dealloc requis ont bien été mis ? Etc
Quelles sont les bonnes pratiques de debugging ? Comment vérifier qu'il n'y a pas de fuite mémoire ? Que tous les dealloc requis ont bien été mis ? Etc
Merci
Eric P.
Tu as l'utilitaire "Instruments" dans le dossier Developer/ Tu peux aussi rajouter des NSLog dans les dealloc pour voir si ils sont bien appelés.
Justement au sujet d'Instruments, il y a un symbole sur lequel j'ai toujours un doute. Je lance l'instrument Leaks et j'ai l'image ci-dessous. Dois-je interpréter cela comme un leak passager ou un leak définitif ?
Bon j'ai ma réponse : ayant trouvé le leak, ce n'est pas un leak temporaire, mais un vrai de vrai. D'ailleurs le rapport était clair donnant la méthode où le leak avait lieu : la ligne 10 indiquait une erreur de ma part (je faisais un retain sur une mutableCopy, or une mutableCopy fait déjà ce retain !)
J'ai essayé Instruments et j'ai de temps en temps comme Philippe49, des triangles rouges plus ou moins grands. A priori, les "addObject:[NSNumber numberWithFloat:..." ne sont pas apprécié. Dois-je déclarer un objet NSNumber, convertir mon float, ajouter l'objet puis le faire un release sur l'objet à chaque fois ?
Un [NSNumber numberWithFloat:..] est créé en mode autorelease. Donc [array addObject:[NSNumber numberWithFloat:5.2]]; ne crée pas de leak. Et ta seconde méthode qui est bonne également, est une complication inutile. Ton leaks ne doit pas venir de là .
En fait mes triangles apparaissent lorsque j'ai une action en cours au moment où la boucle "Leaks Status" fait son analyse. La même action lors du décompte du temps ne donne pas de triangle. Ai-je mal réglé quelque chose ?
La même action lors du décompte du temps ne donne pas de triangle. Ai-je mal réglé quelque chose ?
Au contraire, c'est tout à fait normal, le décompte du temps est un temps d'enregistrement, à la fin duquel Instruments fait l'analyse et rédige ses conclusions.
Je me suis mal exprimé. L'action en question est un touchemoved. Si je la fais pendant le décompte, je n'ai pas de triangle à l'analyse suivante. Mais si l'analyse a lieu pendant le touchemoved j'ai un triangle. Cela ne me semble pas normal.
J'ai eu aussi des choses incompréhensibles lors de tests Instruments avec le device, des "leaks" apparaissant alors que sur le Simulateur ils étaient absents. Personne n'a su me répondre sur le Forum-Developper d'Apple.
Réponses
Tu as l'utilitaire "Instruments" dans le dossier Developer/
Tu peux aussi rajouter des NSLog dans les dealloc pour voir si ils sont bien appelés.
[EDIT] C'est un leaks définitif !
D'ailleurs le rapport était clair donnant la méthode où le leak avait lieu : la ligne 10 indiquait une erreur de ma part (je faisais un retain sur une mutableCopy, or une mutableCopy fait déjà ce retain !)
J'ai essayé Instruments et j'ai de temps en temps comme Philippe49, des triangles rouges plus ou moins grands.
A priori, les "addObject:[NSNumber numberWithFloat:..." ne sont pas apprécié.
Dois-je déclarer un objet NSNumber, convertir mon float, ajouter l'objet puis le faire un release sur l'objet à chaque fois ?
Eric
Donc [array addObject:[NSNumber numberWithFloat:5.2]]; ne crée pas de leak.
Et ta seconde méthode qui est bonne également, est une complication inutile. Ton leaks ne doit pas venir de là .
J'ai exactement pareil si je lance une app made in Apple.
Un petit eclaircissement sur ce CPManager ? oO
La même action lors du décompte du temps ne donne pas de triangle.
Ai-je mal réglé quelque chose ?
Eric
Il faut régler le menu déroulant dans la tool bar
Au contraire, c'est tout à fait normal, le décompte du temps est un temps d'enregistrement, à la fin duquel Instruments fait l'analyse et rédige ses conclusions.
L'action en question est un touchemoved.
Si je la fais pendant le décompte, je n'ai pas de triangle à l'analyse suivante.
Mais si l'analyse a lieu pendant le touchemoved j'ai un triangle.
Cela ne me semble pas normal.
Eric