2 votes

IOS : Dois-je conserver la clé dans le dictionnaire ios ?

J'ai un dictionnaire dans lequel je stocke

1)keys = qui est un attribut de chaîne de caractères d'un "SimpleObject" avec la propriété "assign".

--2) Valeur = "SimpleObject".

NSMutableDictionary conserve l'objet, donc je libère l'objet. La clé est présente dans le même objet. La clé est une chaîne de caractères.

Dois-je retenir explicitement la clé de la chaîne avant de l'ajouter au dict ?

3voto

dasblinkenlight Points 264350

Non, il n'est pas nécessaire de conserver explicitement l'adresse de l'utilisateur. NSString car votre objet le fait déjà. Puisque le dictionnaire conserve l'objet, la fonction NSString est à l'abri d'une libération prématurée.

D'ailleurs, NSDictionary fait une copie de la clé de votre chaîne par précaution contre l'utilisation d'un objet mutable comme clé de dictionnaire (ce qui est très mauvais). C'est pourquoi vous êtes libre de modifier cette clé à l'intérieur de l'objet comme bon vous semble. Bien sûr, cela ne changerait pas le placement de l'objet dans le dictionnaire.

0voto

fresidue Points 122

La réponse est non. Que vous utilisiez ou non l'ARC. Non.

0voto

Benedict Cohen Points 6997

Non, il n'est pas nécessaire de conserver les clés (ou les valeurs) d'un fichier de type NSDictionary . Cela s'explique par le fait que NSDictionary copie la clé. Lorsque vous récupérez un objet avec objectForKey: isEqual: est utilisé pour déterminer quelle clé fait référence à l'objet que vous avez transmis.

0voto

newacct Points 42530

La règle de base de la gestion manuelle de la mémoire dans Cocoa est la suivante : concentrez-vous sur ce que vous faites dans cet objet ou cette méthode ; ne vous préoccupez pas de ce que font les autres objets.

Tout ce que vous faites, c'est passer la clé à une méthode du dictionnaire. Vous ne le stockent pas n'importe où. Quoi que le dictionnaire en fasse, il est responsable de la bonne gestion de la mémoire. Ce qu'il fait ne vous regarde pas.

(Il existe une légère exception avec les blocs, dans la mesure où vous devez parfois les copier avant de les transmettre à une méthode agnostique. Mais ne nous préoccupons pas de cela pour l'instant).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X