¿Cuál es la diferencia entre isEqual:
y isEqualToString:
?
¿Por qué las clases agregan métodos isEqualTo * (isEqualToArray para NSArray, isEqualToData para NSData, ...) en lugar de simplemente anular isEqual:
?
fuente
¿Cuál es la diferencia entre isEqual:
y isEqualToString:
?
¿Por qué las clases agregan métodos isEqualTo * (isEqualToArray para NSArray, isEqualToData para NSData, ...) en lugar de simplemente anular isEqual:
?
isEqual:
compara una cadena con un objeto y devolverá NO
si el objeto no es una cadena. isEqualToString:
es más rápido si sabe que ambos objetos son cadenas, como dice la documentación :
Consideraciones Especiales
Cuando sabe que ambos objetos son cadenas, este método es una forma más rápida de verificar la igualdad que
isEqual:
.
isEqualTo<Class>
se utiliza para proporcionar controles específicos de igualdad. Por ejemplo; isEqualToArray:
comprueba que las matrices contienen un número igual de objetos y que los objetos en un índice dado regresan YES
para la isEqual:
prueba.
Además, para escribir sus propios métodos
-isEqual:
y-isEqualTo<Class>:
, la convención es permitir argumentos nulos-isEqual:
y generar una excepción para argumentos nulos para-isEqualTo<Class>:
fuente
Mi conjetura es que proporciona una ligera mejora en el rendimiento, como isEqualToString: no tendrá que escribir-cheque lo que pasó en.
fuente
Ampliando las respuestas de @Abizern y @Jonathan Dann, ambos
isEqual
yisEqualToString
trabajar connil
valores.fuente
Recomiendo altamente este . Los beneficios de rendimiento de isEqualToString son básicamente insignificantes para la mayoría de las aplicaciones. Pero hay otras dos distinciones que menciona el autor:
nil
se manejafuente