我认为这NSCountedSet
计数numB
和numC
频率的两倍,因为它们具有相同的值,所以我Fraction
从我的类中创建了两个对象(未显示)Fraction
,并且我将它们的ivars
( numerator
, denominator
) 设置为彼此相等,但将countForObject:
它们视为两个不同的对象并计数它们的频率各为一个。numA
并numB
指向内存中的不同位置但共享相同的值,并且两个Fraction
对象指向内存中的不同位置但共享相同的值。为什么Number
对象被视为模糊,而不是Fraction
对象?
#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