Sobes.tech
Junior — Middle

Koji su glavni kriterijumi koje objekat mora ispuniti da bi bio ispravno dodat u kolekciju Set?

sobes.tech АИ

Одговор од АИ

Za pravilno dodavanje objekta u kolekciju Set (na primer, NSSet u iOS) objekat mora:

  • Ispravno i konzistentno implementirati metode -hash i -isEqual:.

    • -hash mora vraćati istu vrednost za objekte koji se smatraju jednakim.
    • -isEqual: mora tačno odrediti jednakost objekata.
  • Biti nepromenljiv u poljima koja učestvuju u izračunu heša i poređenju, dok je objekat u Set-u. U suprotnom, biće narušena celokupnost kolekcije.

Na primer, ako kreirate svoju klasu za skladištenje u NSSet, prepisujte ove 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];
}

Ovo garantuje da će Set pravilno odrediti jedinstvenost objekata.