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 θα καθορίσει σωστά τη μοναδικότητα των αντικειμένων.