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
-hashi-isEqual:.-hashmusi 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.