Sobes.tech
Junior — Middle

Quels sont les critères principaux qu'un objet doit remplir pour être correctement ajouté à la collection Set?

sobes.tech IA

Réponse de l'IA

Pour ajouter correctement un objet à une collection Set (par exemple, NSSet en iOS), l'objet doit :

  • Implémenter correctement et de manière cohérente les méthodes -hash et -isEqual:.

    • -hash doit retourner la même valeur pour les objets considérés comme égaux.
    • -isEqual: doit définir précisément l'égalité des objets.
  • Être immuable sur les champs qui participent au calcul du hash et à la comparaison, tant que l'objet est dans le Set. Sinon, l'intégrité de la collection sera compromise.

Par exemple, si vous créez une classe pour la stocker dans NSSet, redéfinissez ces méthodes :

- (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];
}

Cela garantit que le Set identifiera correctement l'unicité des objets.