Объектное сравнение

Объектное сравнение относится к возможности объекта определить, является ли это по существу тем же как другим объектом. Вы оцениваете, равен ли один объект другому путем отправки одного из объектов isEqual: обменивайтесь сообщениями и передающий в другом объекте. Если объекты равны, Вы получаете назад YES; если они не равны, Вы получаете NO. Каждый класс определяет равенство для своих экземпляров путем реализации специфичной для класса логики сравнения. Корневой класс, NSObject, равенство мер по простому сравнению указателя; в другом экстремальном значении детерминанты равенства для пользовательского класса могли бы быть членством в классе плюс все инкапсулированные значения.

Некоторые классы платформы Основы реализуют методы сравнения формы isEqualToВвести:— например, isEqualToString: и isEqualToArray:. Эти методы выполняют сравнения, определенные для данного типа класса.

Методы сравнения являются необходимыми инструментами кодирования, которые могут помочь Вам решить во время выполнения, что сделать с объектом. Классы набора такой как NSArray и NSDictionary используйте их экстенсивно.

Object comparison

Реализация логики сравнения

Если Вы ожидаете, что экземпляры Вашего пользовательского подкласса будут сравнены, переопределите isEqual: метод и добавляет логику сравнения, которая является определенной для Вашего подкласса. Ваш класс, например, мог бы принять определение суперкласса равенства, но тогда добавить дальнейшие тесты. Ваш класс может иметь одну или более переменных экземпляра, значения которых должны быть равными, прежде чем два экземпляра Вашего класса можно будет считать равными. Следующая реализация isEqual: выполняет ряд проверок, заканчивающихся той, которая специфична для класса ( name свойство).

- (BOOL)isEqual:(id)other {
    if (other == self)
        return YES;
    if (![super isEqual:other])
        return NO;
    return [[self name] isEqualToString:[other name]]; // class-specific
}

Если Вы переопределяете isEqual:, необходимо также реализовать hash метод, чтобы генерировать и возвратить целое число, которое может использоваться в качестве табличного адреса в структуре хэш-таблицы. Если isEqual: решает, что два объекта равны, у них должно быть то же значение хэш-функции.

Необходимые как условие статьи

Похожие статьи

Категорическое обсуждение

    (Ни один)