Comment utiliser un pool autorelease dans un projet non cocoa ?

zenxzenx Membre
13:25 modifié dans API AppKit #1
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  :D

Réponses

  • BruBru Membre
    décembre 2005 modifié #2
    dans 1134125456:

    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.


    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éé.

    .
  • zenxzenx Membre
    décembre 2005 modifié #3
    Ok Merci 
  • BruBru Membre
    13:25 modifié #4
    dans 1134132499:

    Donc dois je comprendre que dans un projet non cocoa (un projet n'appellant pas la lib Appkit), il est impossible de se créer son pool à  soi ?.


    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.

    .
  • zenxzenx Membre
    13:25 modifié #5
    Merci pour ta dernière réponse ! 
Connectez-vous ou Inscrivez-vous pour répondre.