Sobes.tech
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 ще определи правилно уникалността на обектите.