Zamieszanie z wyraźnym i niewyraźnym przedmiotem

Myślałem, żeNSCountedSet policzonenumB inumC dwukrotnie w częstotliwości, ponieważ miały tę samą wartość, więc stworzyłem dwieFraction obiekty (nie pokazane) z mojej klasyFractioni ustawiłem ichivars (numerator, denominator) aby się równać, alecountForObject: traktowano je jako dwa odrębne obiekty i liczono ich częstotliwości jako po jednym.numA inumB wskazał na różne miejsca w pamięci, ale mają tę samą wartość i dwieFraction obiekty wskazywały na różne miejsca w pamięci, ale miały tę samą wartość. DlaczegoNumber obiekty traktowane jako niewyraźne, ale nieFraction przedmioty?

#import <Foundation/Foundation.h>
#import "Fraction.h"

int main (int argc, char *argv[]) {
    @autoreleasepool {
        NSNumber *numA = [NSNumber numberWithInt: 1];
        NSNumber *numB = [NSNumber numberWithInt: 2];
        NSNumber *numC = [NSNumber numberWithInt: 2];

        NSArray *array = [NSArray arrayWithObjects: numA, numB, numC, nil];

        NSCountedSet *mySet = [[NSCountedSet alloc] initWithArray: array];
        for (NSNumber *myNum in mySet) {
            NSLog(@"Number: %i Frequency: %lu", [myNum intValue], [mySet countForObject: myNum]);
        }

        }
    return 0;
}
2012-08-05 17:44:58.667 prog[1150:707] Number: 1 Frequency: 1
2012-08-05 17:44:58.669 prog[1150:707] Number: 2 Frequency: 2

questionAnswers(1)

yourAnswerToTheQuestion