Sobes.tech
Junior — Middle

Ποια είναι τα βασικά κριτήρια που πρέπει να πληροί ένα αντικείμενο για να προστεθεί σωστά στη συλλογή Set;

sobes.tech AI

Απάντηση από AI

Για να προσθέσετε σωστά ένα αντικείμενο σε μια συλλογή Set (π.χ., NSSet στο iOS), το αντικείμενο πρέπει:

  • Να υλοποιεί σωστά και συνεπώς τις μεθόδους -hash και -isEqual:.

    • Το -hash πρέπει να επιστρέφει την ίδια τιμή για αντικείμενα που θεωρούνται ίσα.
    • Το -isEqual: πρέπει να καθορίζει με ακρίβεια την ισότητα των αντικειμένων.
  • Να είναι αμετάβλητο στα πεδία που συμμετέχουν στον υπολογισμό του hash και στη σύγκριση, όσο το αντικείμενο βρίσκεται στο 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 θα καθορίσει σωστά τη μοναδικότητα των αντικειμένων.