implémentation d'un copyKeys: renvoyer un objet retenu ?
ClicCool
Membre
Bonjour,
Pas de doutes Clang lave plus blanc, et mon code est étincellant
Néanmoins je suis étonné qu'il m'impose de renvoyer un objet avec un retain count à 1 dans une méthode de classe personnelle: [tt]+(NSMutableArray*)copyKeys[/tt] qui me sert à facilité la copie d'un objet.
En gros, pour copier un objet, je commence donc par demander à la classe les clefs pertinentes à copier grâce à mon:
[tt]+(NSMutableArray*)copyKeys[/tt] .
(NSMutableArray par ce que chaque sous-classe, après avoir appelé sa maman, complète le dictionnaire récupéré avec ses clefs personnelles)
Puis je récupère les valeurs pertinentes de l'objet originel avec:
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys
Enfin je "rempli" un objet nouvellement créé avec:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
Si les deux dernière méthodes font partie d'un protocole informel, la méthode de classe +copyKey est mienne (enfin, je crois) et j'aurais tout aussi bien pu l'appeler +clefsDuChampDeTir ou autre.
[tt]+(NSMutableArray*)copyKeys[/tt] ferait-elle partie d'un protocole existant ?
Clang réagit-il à cause du nom qui commence par copy.. ?
Y'a-t-il une convention de nomage que j'aurai enfreinte (à l'insu de mon plein grès) en nommant ainsi ma méthode de classe ?
P.S. je me demande si on devrait pas ajouter une section "Gestion mémoire" pour y regrouper toutes les questions sur les retain, copy, release etc... ET le Garbage "édition Collector" (qui est finalement assez complexe à maitriser dans ses détails) ::)
Pas de doutes Clang lave plus blanc, et mon code est étincellant
Néanmoins je suis étonné qu'il m'impose de renvoyer un objet avec un retain count à 1 dans une méthode de classe personnelle: [tt]+(NSMutableArray*)copyKeys[/tt] qui me sert à facilité la copie d'un objet.
En gros, pour copier un objet, je commence donc par demander à la classe les clefs pertinentes à copier grâce à mon:
[tt]+(NSMutableArray*)copyKeys[/tt] .
(NSMutableArray par ce que chaque sous-classe, après avoir appelé sa maman, complète le dictionnaire récupéré avec ses clefs personnelles)
Puis je récupère les valeurs pertinentes de l'objet originel avec:
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys
Enfin je "rempli" un objet nouvellement créé avec:
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues
Si les deux dernière méthodes font partie d'un protocole informel, la méthode de classe +copyKey est mienne (enfin, je crois) et j'aurais tout aussi bien pu l'appeler +clefsDuChampDeTir ou autre.
[tt]+(NSMutableArray*)copyKeys[/tt] ferait-elle partie d'un protocole existant ?
Clang réagit-il à cause du nom qui commence par copy.. ?
Y'a-t-il une convention de nomage que j'aurai enfreinte (à l'insu de mon plein grès) en nommant ainsi ma méthode de classe ?
P.S. je me demande si on devrait pas ajouter une section "Gestion mémoire" pour y regrouper toutes les questions sur les retain, copy, release etc... ET le Garbage "édition Collector" (qui est finalement assez complexe à maitriser dans ses détails) ::)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est indiqué là :
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994
Il rigole pas avec la syntaxe Clang !
Je vais donc essayer de trouver un nom moins conflictuel à ma méthode alors.
parce que les méthodes connues de l'API Cocoa sont plutôt essentiellement "copy" et... "mutableCopy" (et non "copyMutable")... à moins que la règle/convention de nommage s'applique dans les deux sens ?
En fait c'est tout ce qui contient "copy" ou commence par "alloc" ou "new"...
Envisageant le nom de keysForCopy pour ma méthode et pensant du coup, comme toi, aux méthodes mutableCopy, je revanais justement pour poser la même question !! :P
Bon, va falloir que je trouve un autre nom encore ...
MERCI