Sobes.tech
Junior — Middle

Care sunt criteriile principale pe care un obiect trebuie să le îndeplinească pentru a fi adăugat corect în colecția Set?

sobes.tech AI

Răspuns de la AI

Pentru a adăuga corect un obiect într-o colecție Set (de exemplu, NSSet în iOS), obiectul trebuie:

  • Să implementeze corect și coerent metodele -hash și -isEqual:.

    • -hash trebuie să returneze aceeași valoare pentru obiectele considerate egale.
    • -isEqual: trebuie să determine cu precizie egalitatea obiectelor.
  • Să fie imuabil în câmpurile care participă la calculul hash-ului și comparare, atâta timp cât obiectul se află în Set. Altfel, integritatea colecției va fi compromisă.

De exemplu, dacă creezi o clasă pentru stocare în NSSet, suprascrie aceste metode:

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

Aceasta asigură că Set va determina corect unicitatea obiectelor.