同じ値であるため、頻度が2回NSCountedSet
カウントされるnumB
と思ったので、クラスから2つのオブジェクト(図示せず)を作成し、それらの(、)を互いに等しくなるように設定しましたが、それらを2つの別個のオブジェクトとして扱い、カウントしました。それぞれの周波数。そして、メモリ内の異なる場所を指していますが、同じ値を共有しています。2つのオブジェクトは、メモリ内の異なる場所を指していますが、同じ値を共有しています。オブジェクトが不明瞭として扱われたのに、オブジェクトは扱われなかったのはなぜですか?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