Sobes.tech
Junior — Middle

Jaké jsou hlavní kritéria, která musí objekt splnit, aby byl správně přidán do kolekce Set?

sobes.tech AI

Odpověď od AI

Pro správné přidání objektu do kolekce Set (například NSSet v iOS) musí objekt:

  • Správně a konzistentně implementovat metody -hash a -isEqual:.

    • -hash by měl vracet stejnou hodnotu pro objekty považované za rovné.
    • -isEqual: musí přesně určovat rovnost objektů.
  • Být neměnný v polích, které se podílejí na výpočtu hashe a porovnání, dokud je objekt v Set. Jinak dojde k narušení integrity kolekce.

Například, pokud vytváříte vlastní třídu pro uložení v NSSet, přepište tyto metody:

- (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 zajišťuje, že Set správně určí jedinečnost objektů.