Comment utiliser un pool autorelease dans un projet non cocoa ?
zenx
Membre
J'ai cru comprendre que dans un projet cocoa, donc un projet qui par défaut importe la bibliothèque AppKit, il y avait un autoReleasePool par défaut ce qui implique qu'on est pas obligé de s'en créer un personnelement. Par conséquent, il suffit simplement d'envoyer un message autorelease à l'objet sans se soucier d'autre chose. Par contre, dans le cas d'un projet ne faisant pas appel à l'AppKit, comment doit on s'y prendre pour disposer d'une telle fonction puisque je suppose que la classe NSAutoReleasePool fait partie de l'AppKit !??. On ne pourra donc pas se créer son pool à soit en déclarant une variable pool de type NSAutoReleasePool !?. Comment faire ? ???
Merci pour les nombreuses réponses
Merci pour les nombreuses réponses
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Non !
Un autorelease-pool est automatiquement créé en début de run-loop (la boucle qui attend puis dispatch les événements). Cet autorelease-pool est ensuite détruit en fin de run-loop.
La première run-loop est créée par NSApplicationMain() qu'on retrouve dans la fonction main() d'une appli avec UI.
Pour le reste, un autorelease-pool se créé simplement par alloc/init, ce qui permet l'emploi de la méthode autorelease de NSObject. On le détruit, par release, bien sûr.
L'autorelease-pool "actif" est toujours celui qui a été le dernier créé.
.
L'autorelease-pool fait partie du Foundation, et non de l'AppKit.
L'Appkit ne sert que pour les applis avec une UI.
Par contre, hors le framework cocoa, point d'autorelase-pool, effectivement.
.