Sobes.tech
Junior — Middle

Kādi ir galvenie kritēriji, kuriem objektam jāatbilst, lai pareizi pievienotos kolekcijai Set?

sobes.tech AI

Atbilde no AI

Lai pareizi pievienotu objektu kolekcijai Set (piemēram, NSSet iOS), objekts ir:

  • Pareizi un konsekventi jāievieš metodes -hash un -isEqual:.

    • -hash jāatgriež tāda pati vērtība objektiem, kas tiek uzskatīti par vienādiem.
    • -isEqual: jāprecīzi nosaka objektu vienādību.
  • Objekts jābūt nemainīgam tajos laukos, kas iesaistīti heša aprēķinā un salīdzināšanā, kamēr tas atrodas Set. Pretējā gadījumā kolekcijas integritāte tiks bojāta.

Piemēram, ja veidojat savu klasi, lai to glabātu NSSet, pārrakstiet šos metodes:

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

Tas nodrošina, ka Set pareizi noteiks objektu unikālo identitāti.