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-ը ճիշտ կհայտարարի օբյեկտների եզակիությունը։