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 KlasseFraction
und 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