Sobes.tech
Назад к вопросам
Junior — Middle
70

Каковы основные критерии, которым должен соответствовать объект для корректного добавления в коллекцию Set?

Компании, где спрашивали
Uzum

Ответ от нейросети

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