[Résolu] - ARC - Manipulation des objets dans un tableau
skimpy
Membre
Bonjour,
Je suis en train de lire Objective-C Programming (Big Nerd Ranch) et je me penche sur ARCet je me pose une question concernant la gestion des objets dans un tableau.
J'aimerais simplement déplacer un objet d'un index n à un index n + x. Dans l'exemple du livre, on voit clairement que lorsque la méthode removeObjectAtIndex est appelée, l'instance est détruite. J'ai fait un test un faisant un remove et un insert juste après, et ça a marché.
Je me demandais si c'était de la pure chance ou si dans mon cas, il aurait mieux fallu créer d'abord une copie de l'objet ? En fait ma question est : avec ARC, faut-il faire une copie de l'objet lorsque l'on souhaite le déplacer d'index n à un index n + x ?
Merci.
Philippe
Je suis en train de lire Objective-C Programming (Big Nerd Ranch) et je me penche sur ARCet je me pose une question concernant la gestion des objets dans un tableau.
J'aimerais simplement déplacer un objet d'un index n à un index n + x. Dans l'exemple du livre, on voit clairement que lorsque la méthode removeObjectAtIndex est appelée, l'instance est détruite. J'ai fait un test un faisant un remove et un insert juste après, et ça a marché.
Je me demandais si c'était de la pure chance ou si dans mon cas, il aurait mieux fallu créer d'abord une copie de l'objet ? En fait ma question est : avec ARC, faut-il faire une copie de l'objet lorsque l'on souhaite le déplacer d'index n à un index n + x ?
Merci.
Philippe
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il n'empêche que sans ARC, tu aurais du faire un -retain sur l'objet par mesure de sécurité.
En fait ARC a été créé à cause de ce genre de problèmes.. Qui n'en sont pas vraiment si on maà®trise bien la gestion mémoire et que l'on prend un minimum de précautions.
Avec ARC, le code aurait été la même chose, sans le retain/release.
-[retain]
Retenir un objet augmente son retain count de 1, ce qui signifie qu'il devra recevoir un appel de plus à -[release] pour être désalloué.
-[copy]
Copier un objet crée une deuxième instance de la même classe dont les variables d'instance ont la même valeur. Il s'agit d'un autre objet.
À une exception près: l'implémentation de -[copy] pour certains objets non mutables (NSString, NSValue...) appelle en fait -[retain]. En effet, par définition, leurs variables d'instance n'étant pas modifiables, il ne sert à rien de dupliquer l'instance.
Donc comme on récupère un objet de type autorelease ça cela marche très bien sans rien ajouter...
C'est pas faux.
merci pour le lien.
Bon, je sors boire un Perrier Citron ça me rafraichira les idées