tester l'allocation avant de faire un release
Rocou
Membre
Bonjour,
Pourquoi personne ne teste si un objet est alloué avant de faire un release?
Peut-on le faire? Si oui, comment?
Cela éviterait bien des crashes
Pourquoi personne ne teste si un objet est alloué avant de faire un release?
Peut-on le faire? Si oui, comment?
Cela éviterait bien des crashes
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc vérifié le retain count par exemple, avant de faire un release risquerais de masquer ce genre de souci.
De plus, avec les autorelease tu ne peux pas te baser sur cette technique. En gros il faut faire attention et bien concevoir son application, mais dans un sens c'est pas une si mauvaise chose, ça force à faire attention à sa conception et a ne pas coder à l'arrache.
Merci pour ta réponse.
La gestion de la mémoire est décidément bien complexe
Vivement le Garbage Collector imposé par Apple :P
Le jour ou ça arrive, je jette mes macs et j'achète un PC avec linux dessus...
Un ramasseur de miettes ne remplacera jamais un cerveau humain pour une gestion optimale de la mémoire. Et non, la gestion de la mémoire n'est pas complexe. Par contre c'est sûr que si on ne prend pas le temps de se documenter et d'apprendre, ça peut faire peur. Gérer la mémoire, ça nécessite juste de la discipline, et la discipline c'est bien :P
Lorsque vous faites un release de vos objets, la ligne suivante doit être la mise à nil du pointeur en question, ainsi si par la suite vous vous retrouvez sur un cas loufoque où vous envoyez un release sur un objet qui n'existe pas (property non alloué par exemple), le message release est envoyé à nil et ne plante pas (spec du runtime, l'envois de message à nil ne fait pas planter).
C'est aussi simple que ça, inutile de tester puisque si on pense a mettre ses pointeurs à nil on plante pas :-)
Je plusois Yoann! :P
C'est tellement plus simple de pas faire compliqué...
Parce que j'utilise un FrameWork qui ne l'utilise pas
Merci à Yoann pour son judicieux conseil.