¿Cuál es la diferencia entre isEqual:
y isEqualToString:
😕
¿Por qué las clases agregan los 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 lo indica 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
se usa para proporcionar comprobaciones específicas de igualdad. Por ejemplo; isEqualToArray:
comprueba que las matrices contengan la misma cantidad de objetos y que los objetos de un índice determinado devuelven YES
para la prueba isEqual:
Además, para escribir sus propios -isEqual:
y -isEqualTo
la convención es para permitir argumentos nulos para -isEqual:
y elevar una excepción para argumentos nil a -isEqualTo
Mi suposición es que proporciona una ligera mejora en el rendimiento, ya que es EqualToString: no tendrá que comprobar el tipo de lo que ha pasado.
Al expandirse en @Abizern y @Jonathan Dann, las respuestas isEqual
y isEqualToString
funcionan con valores nil
.
- (void)testStringEqual { NSString *string = nil; STAssertFalse([string isEqual:@"test"], @"NSString isEqual"); STAssertFalse([string isEqualToString:@"test"], @"NSString isEqualToString"); // Note that these both return NO STAssertFalse([string isEqual:nil], @"NSString isEqual"); STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString"); string = @"test"; STAssertTrue([string isEqual:@"test"], @"NSString isEqual"); STAssertTrue([string isEqualToString:@"test"], @"NSString isEqualToString"); STAssertFalse([string isEqual:nil], @"NSString isEqual"); STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString"); }
Recomiendo esto . Los beneficios de rendimiento de isEqualToString son prácticamente insignificantes para la mayoría de las aplicaciones. Pero hay otras dos distinciones que el autor menciona:
nil