Quelle est la différence entre isEqual:
et isEqualToString:
?
Pourquoi les classes ajoutent-elles des méthodes isEqualTo * (isEqualToArray pour NSArray, isEqualToData pour NSData, ...) au lieu de simplement remplacer isEqual:
?
la source
Quelle est la différence entre isEqual:
et isEqualToString:
?
Pourquoi les classes ajoutent-elles des méthodes isEqualTo * (isEqualToArray pour NSArray, isEqualToData pour NSData, ...) au lieu de simplement remplacer isEqual:
?
isEqual:
compare une chaîne à un objet et retournera NO
si l'objet n'est pas une chaîne. isEqualToString:
est plus rapide si vous savez que les deux objets sont des chaînes, comme l' indique la documentation :
Considérations particulières
Lorsque vous savez que les deux objets sont des chaînes, cette méthode est un moyen plus rapide de vérifier l'égalité que
isEqual:
.
isEqualTo<Class>
est utilisé pour fournir des contrôles spécifiques d'égalité. Par exemple; isEqualToArray:
vérifie que les tableaux contiennent un nombre égal d'objets et que les objets à un index donné retournent YES
pour le isEqual:
test.
Aussi, pour écrire vos propres méthodes
-isEqual:
et-isEqualTo<Class>:
, la convention est d'autoriser nil arguments pour-isEqual:
et de lever une exception pour les arguments nil à-isEqualTo<Class>:
la source
Je suppose que cela fournit une légère amélioration des performances, comme isEqualToString: vous n'aurez pas à taper ce qui est passé.
la source
Développer les réponses @Abizern et @Jonathan Dann, les deux
isEqual
etisEqualToString
travailler avec desnil
valeurs.la source
Je recommande fortement ce . Les avantages de performance de isEqualToString sont fondamentalement négligeables pour la plupart des applications. Mais il y a deux autres distinctions que l'auteur mentionne:
nil
est géréla source