Sobes.tech
Junior — Middle

Quali sono i criteri principali che un oggetto deve soddisfare per essere aggiunto correttamente alla collezione Set?

sobes.tech AI

Risposta dell'AI

Per aggiungere correttamente un oggetto a una collezione Set (ad esempio, NSSet in iOS), l'oggetto deve:

  • Implementare correttamente e in modo coerente i metodi -hash e -isEqual:.

    • -hash deve restituire lo stesso valore per oggetti considerati uguali.
    • -isEqual: deve determinare con precisione l'uguaglianza degli oggetti.
  • Essere immutabile nei campi che partecipano al calcolo dell'hash e al confronto, mentre l'oggetto si trova nel Set. Altrimenti, si compromette l'integrità della collezione.

Ad esempio, se crei una classe per conservarla in NSSet, sovrascrivi questi metodi:

- (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];
}

Questo garantisce che Set determinerà correttamente l'unicità degli oggetti.