Sobes.tech
Junior — Middle

Quais são os critérios principais que um objeto deve atender para ser adicionado corretamente à coleção Set?

sobes.tech IA

Resposta da IA

Para adicionar corretamente um objeto a uma coleção Set (por exemplo, NSSet no iOS), o objeto deve:

  • Implementar corretamente e de forma consistente os métodos -hash e -isEqual:.

    • -hash deve retornar o mesmo valor para objetos considerados iguais.
    • -isEqual: deve determinar com precisão a igualdade dos objetos.
  • Ser imutável nos campos que participam do cálculo do hash e na comparação, enquanto o objeto estiver no Set. Caso contrário, a integridade da coleção será comprometida.

Por exemplo, se criar uma classe para armazenar em NSSet, sobrescreva esses métodos:

- (NSUInteger)hash {
    return self.identifier.hash;
}

- (BOOL)isEqual:(id)object {
    if (self == object) return YES;
    if (![object isKindOfClass:[MyClass class]]) return NO;
    return [self.identifier isEqual:((MyClass *)object).identifier];
}

Isso garante que o Set determinará corretamente a unicidade dos objetos.