Verwechslung mit eindeutigen und undeutlichen Objekten

Ich dachte, dassNSCountedSet gezähltnumB undnumC zweimal in der Frequenz, weil sie den gleichen Wert hatten, also habe ich zwei erstelltFraction Objekte (nicht abgebildet) aus meiner KlasseFractionund ich setze ihreivars (numerator, denominator) einander aber die gleichencountForObject: behandelte sie als zwei verschiedene Objekte und zählte ihre Frequenzen als jeweils eines.numA undnumB wies auf verschiedene Stellen im Speicher, aber teilen den gleichen Wert, und die beidenFraction Objekte zeigten auf verschiedene Stellen im Speicher, teilten jedoch den gleichen Wert. Warum waren dieNumber Objekte, die als undeutlich behandelt werden, aber nicht dieFraction Objekte?

#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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage