Sobes.tech
Junior — Middle

Jakie są główne kryteria, które obiekt musi spełniać, aby poprawnie dodać go do kolekcji Set?

sobes.tech AI

Odpowiedź od AI

Aby poprawnie dodać obiekt do kolekcji Set (np. NSSet w iOS), obiekt musi:

  • Poprawnie i spójnie implementować metody -hash i -isEqual:.

    • -hash musi zwracać tę samą wartość dla obiektów uważanych za równe.
    • -isEqual: musi dokładnie określać równość obiektów.
  • Być niezmiennym w polach, które uczestniczą w obliczaniu hasha i porównaniu, dopóki obiekt znajduje się w Set. W przeciwnym razie zostanie naruszona integralność kolekcji.

Na przykład, jeśli tworzysz własną klasę do przechowywania w NSSet, nadpisz te 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];
}

To gwarantuje, że Set poprawnie zidentyfikuje unikalność obiektów.