Sobes.tech
Junior — Middle

¿Cuáles son los criterios principales que un objeto debe cumplir para ser añadido correctamente a la colección Set?

sobes.tech AI

Respuesta de la IA

Para agregar correctamente un objeto a una colección Set (por ejemplo, NSSet en iOS), el objeto debe:

  • Implementar correctamente y de manera coherente los métodos -hash y -isEqual:.

    • -hash debe devolver el mismo valor para objetos considerados iguales.
    • -isEqual: debe determinar con precisión la igualdad de objetos.
  • Ser inmutable en los campos que participan en el cálculo del hash y en la comparación, mientras el objeto esté en el Set. De lo contrario, se violará la integridad de la colección.

Por ejemplo, si creas una clase para almacenarla en NSSet, sobrescribe estos 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];
}

Esto garantiza que el Set determinará correctamente la unicidad de los objetos.