Comparer son style de programmation

2»

Réponses

  • psychoh13psychoh13 Mothership Developer Membre
    18:40 modifié #32
    dans 1190218520:

    Il me semble : une "convenient method" comme scannerWithString: crée le scanner en autorelease.
    Par contre, en forçant le nombre de boucles dans le test, je tombe sur un manque de mémoire qui est sans doute dû au fait que la libération de la mémoire des objets en autorelease sont réalisés en lazy-mode. Cela confirme le post de Bru.


    En ce qui concerne l'objet NSScanner, je ne m'inquiète pas. Je m'inquiète surtout pour l'objet placé grâce à  la référence : &current dans la méthode scanUpToCharactersFromSet:intoString: est-ce que le résultat stocké dans la référence reçoit un message autorelease ?
  • septembre 2007 modifié #33
    dans 1190218520:

    dans 1190184776:

    Ensuite, ce truc : return [[array retain] autorelease]; sert à  rien :D

    Tout à  fait d'accord.
    J'avais été surpris de le trouver dans le script Apple "Place Accessor Defs On Clipboard" (menu des scripts de XCode), alors un peu de provoque ...


    Dans le cas d'un accesseur, ça peut servir à  quelque chose.

    [tt]id obj = [rec myVar]; // (1) en supposant que _myVar ait un retainCount de 1

    // beaucoup de code et si possible via des appels de méthodes pour compliquer le debugging
    [rec setMyVar:newObj]; // (2)

    // encore du code

    [obj doSomething]; // crash si pas de retain/autorelease, l'objet désigné par obj a été libéré en (2), ou bien il aurait fallu faire un retain en (1)[/tt]

    Ce n'est donc pas si innocent, même si ce genre de cas de figure est plutôt rare (jamais rencontré perso).
  • Philippe49Philippe49 Membre
    18:40 modifié #34
    dans 1190219146:

    Je m'inquiète surtout pour l'objet placé grâce à  la référence : &current dans la méthode scanUpToCharactersFromSet:intoString: est-ce que le résultat stocké dans la référence reçoit un message autorelease ?

    Oh ben ce serait mal foutu, et indiqué dans la doc qu'il reste à  la charge du receveur de faire la désallocation.
    En général, une méthode se doit de renvoyer les objets en mode autorelease, sauf cas particulier.
  • psychoh13psychoh13 Mothership Developer Membre
    18:40 modifié #35
    dans 1190225741:

    Oh ben ce serait mal foutu, et indiqué dans la doc qu'il reste à  la charge du receveur de faire la désallocation.
    En général, une méthode se doit de renvoyer les objets en mode autorelease, sauf cas particulier.


    Je demandais pour vérifier on n'est jamais trop prudent :D
  • psychoh13psychoh13 Mothership Developer Membre
    18:40 modifié #36
    Bon, je relance le sujet un peu, pour vous faire remarquer qu'Apple a finalement ajouté la méthode permettant de séparer une NSString avec l'un des caractères d'une liste donnée. :D


    D'ailleurs avec time, j'ai remarqué que ma méthode est aussi rapide que la leur. :p
Connectez-vous ou Inscrivez-vous pour répondre.