Junior — Middle
Какви са основните критерии, които трябва да отговаря един обект, за да бъде правилно добавен към колекцията Set?
sobes.tech AI
Отговор от AI
За правилното добавяне на обект към колекция Set (например, NSSet в iOS), обектът трябва:
-
Да реализира правилно и последователно методите
-hashи-isEqual:.-hashтрябва да връща еднаква стойност за обекти, които се считат за равни.-isEqual:трябва точно да определя равенството на обектите.
-
Да бъде неизменяем по полетата, участващи в изчисляването на хеша и сравнението, докато обектът е в Set. В противен случай, целостта на колекцията ще бъде нарушена.
Например, ако създавате собствен клас за съхранение в NSSet, препишете тези методи:
- (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];
}
Това гарантира, че Set ще определи правилно уникалността на обектите.