Sobes.tech
Junior — Middle

Aké sú hlavné kritériá, ktorým musí objekt vyhovieť, aby bol správne pridaný do kolekcie Set?

sobes.tech AI

Odpoveď od AI

Pre správneho pridania objektu do kolekcie Set (napríklad NSSet v iOS) musí objekt:

  • Správne a konzistentne implementovať metódy -hash a -isEqual:.

    • -hash by mal vracať rovnakú hodnotu pre objekty považované za rovné.
    • -isEqual: musí presne určovať rovnosť objektov.
  • Byť nemenný v poliach, ktoré sa podieľajú na výpočte hashu a porovnaní, pokiaľ je objekt v Set. Inak dôjde k narušeniu integrity kolekcie.

Napríklad, ak vytvárate vlastnú triedu na uloženie v NSSet, prepíšte tieto metódy:

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

Toto zabezpečí, že Set správne určí jedinečnosť objektov.