Junior — Middle
Jaké jsou hlavní kritéria, která musí objekt splnit, aby byl správně přidán do kolekce Set?
sobes.tech AI
Odpověď od AI
Pro správné přidání objektu do kolekce Set (například NSSet v iOS) musí objekt:
-
Správně a konzistentně implementovat metody
-hasha-isEqual:.-hashby měl vracet stejnou hodnotu pro objekty považované za rovné.-isEqual:musí přesně určovat rovnost objektů.
-
Být neměnný v polích, které se podílejí na výpočtu hashe a porovnání, dokud je objekt v Set. Jinak dojde k narušení integrity kolekce.
Například, pokud vytváříte vlastní třídu pro uložení v NSSet, přepište tyto metody:
- (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];
}
Toto zajišťuje, že Set správně určí jedinečnost objektů.