Sobes.tech
Junior — Middle

Mik a fő kritériumok, amelyeket egy objektumnak meg kell felelnie a Set gyűjteménybe való helyes hozzáadásához?

sobes.tech MI

Válasz az MI-től

Egy objektum helyes hozzáadásához egy Set gyűjteményhez (például NSSet iOS-en) az alábbiak szükségesek:

  • Helyesen és következetesen kell megvalósítani a -hash és -isEqual: metódusokat.

    • A -hash ugyanazt az értéket kell, hogy adja az egyenlőnek tekintett objektumok esetén.
    • Az -isEqual: pontosan kell, hogy meghatározza az objektumok egyezőségét.
  • Az objektumnak változatlannak kell lennie a hash és összehasonlítás szempontjából azokban a mezőkben, amelyek részt vesznek a hash számításában és az összehasonlításban, amíg az objektum a Set-ben van. Ellenkező esetben sérül a gyűjtemény integritása.

Például, ha saját osztályt hozol létre, hogy NSSet-ben tárold, írd felül ezeket a metódusokat:

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

Ez biztosítja, hogy a Set helyesen határozza meg az objektumok egyediségét.