Sobes.tech
Junior — Middle

Ҳадафҳои асосии объект барои илова кардани дуруст ба коллексияи Set чӣҳоянд?

sobes.tech AI

Ҷавоб аз AI

Барои илова кардани дуруст объекти ба коллексияи Set (масалан, NSSet дар iOS) объект бояд:

  • Методҳои -hash ва -isEqual:-ро дуруст ва муттасил иҷро кунад.

    • -hash бояд арзиши якхела барои объектҳое, ки баробар ҳисобида мешаванд, баргардонад.
    • -isEqual: бояд бо дақиқӣ баробарии объектҳоро муайян кунад.
  • Дар майдонҳое, ки дар ҳисоб кардани хеш ва муқоиса иштирок мекунанд, тағирнопазир бошад, то вақте ки объект дар 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 дуруст муайян мекунад, ки объектҳо якхела мебошанд.