Sobes.tech
Junior — Middle

Kokie yra pagrindiniai kriterijai, kuriems turi atitikti objektas, kad teisingai būtų pridėtas į Set kolekciją?

sobes.tech AI

Atsakymas iš AI

Norint teisingai pridėti objektą į Set kolekciją (pavyzdžiui, NSSet iOS), objektas turi:

  • Teisingai ir nuosekliai įgyvendinti -hash ir -isEqual: metodus.

    • -hash turi grąžinti tą pačią reikšmę objektams, kurie laikomi lygiais.
    • -isEqual: turi tiksliai nustatyti objektų lygybę.
  • Būti nepakitęs tose laukuose, kurie dalyvauja hash skaičiavime ir palyginime, kol objektas yra Set. Kitaip, kolekcijos vientisumas bus pažeistas.

Pavyzdžiui, jei kuriate savo klasę saugoti NSSet, perrašykite šiuos metodus:

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

Tai užtikrina, kad Set teisingai nustatys objektų unikalumą.