Qual é a diferença entre isEqual:
e isEqualToString:
?
Por que as classes estão adicionando métodos isEqualTo * (isEqualToArray para NSArray, isEqualToData para NSData, ...) em vez de apenas substituir isEqual:
?
fonte
Qual é a diferença entre isEqual:
e isEqualToString:
?
Por que as classes estão adicionando métodos isEqualTo * (isEqualToArray para NSArray, isEqualToData para NSData, ...) em vez de apenas substituir isEqual:
?
isEqual:
compara uma string com um objeto e retornará NO
se o objeto não for uma string. isEqualToString:
é mais rápido se você souber que ambos os objetos são strings, como afirma a documentação :
Considerações Especiais
Quando você sabe que ambos os objetos são strings, esse método é uma maneira mais rápida de verificar a igualdade do que
isEqual:
.
isEqualTo<Class>
é usado para fornecer verificações específicas de igualdade. Por exemplo; isEqualToArray:
verifica se os arrays contêm um número igual de objetos e se os objetos em um determinado índice retornam YES
para o isEqual:
teste.
Além disso, para escrever seus próprios métodos
-isEqual:
e-isEqualTo<Class>:
, a convenção é permitir argumentos nulos para-isEqual:
e levantar uma exceção para argumentos nulos para-isEqualTo<Class>:
fonte
Meu palpite é que ele fornece um pequeno aprimoramento de desempenho, já que isEqualToString: não terá que verificar o que foi passado.
fonte
Expandindo as respostas @Abizern e @Jonathan Dann,
isEqual
eisEqualToString
trabalhar comnil
valores.fonte
Eu recomendo altamente isso . Os benefícios de desempenho de isEqualToString são basicamente insignificantes para a maioria dos aplicativos. Mas existem duas outras distinções que o autor menciona:
nil
é tratadafonte