Comment comparer si deux objets sont vraiment le même objet?
Je veux comparer si une variable A représente le même objet que la variable B n'.
Pourrais-je le faire avec l'opérateur==?
Ou quoi d'autre est-ce exactement? Je pense que j'ai besoin de vérifier pour la mémoire de l'adresse de l'objet où la variable est pointe de, droite?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
La
==
opérateur teste si les deux expressions sont les mêmes pointeur vers le même objet. Cacao appelle cette relation “à l'identique” (voir, par exemple, NSArray deindexOfObjectIdenticalTo:
).Pour tester si deux objets sont égaux, vous envoyez l'un d'eux une
isEqual:
message (ou un message plus spécifique, commeisEqualToString:
si elle répond à l'un), en passant de l'autre objet. Ce serait de retourYES
si vous avez vraiment seulement un objet (égal à lui-même, évidemment) ou si vous avez deux objets sont égaux. Dans ce dernier cas,==
permettra d'évaluer àNO
.L' == vous indique si deux pointeurs pointent vers le même objet.
isEqual
vous indique si le contenu de ces deux objets sont les mêmes (mais pas forcément le même objet). Un peu déroutant.Essayer ce code pour mieux comprendre:
[objectA isEqual:objectB]
est généralement un bon choix. Notez que certaines classes peuvent avoir de plus en plus spécialisée de l'égalité des fonctions. (isEqualToString:
et.al.) Ce qui est généralement le test de ne pas s'ils sont le même objet, mais si les objets sont égaux, ce qui est un concept distinct. (Chaîne de deux objets peuvent être égaux, même s'ils n'ont pas la même adresse mémoire.)Les deux autres réponses répondre correctement à la question dans votre titre. La bonne réponse à la question complètement différente dans votre corps de texte, cependant, est: oui, l'opérateur == est correct pour tester si deux variables reportez-vous à la même objet.