NSMutableOrderedSetに多くの[NSNull null]を追加できない理由を理解できません:
NSMutableOrderedSet *set = [[NSMutableOrderedSet alloc]init];
for(int i = 0; i < 10; i++)
{
[set addObject: [NSNull null]];
}
NSLog("SET COUNT : %d", set.count);
この出力:
SET COUNT : 1
NSMutableArrayで試してみるとうまくいきますが、私はNSNullのドキュメントを読んでいます(これは本当に短いですが、助けてくれませんでしたが)
"The NSNull class defines a singleton object used to represent null values in collection objects"
NSMutableOrderedSetのドキュメントを参照してください。
"[...] ordered collection of distinct objects"
だからコレクションであれば、それはなぜ機能していませんか?
どうもありがとうございました
回答:
回答№1は2[NSNull null]
常に返す 同じオブジェクト (のシングルトンインスタンス NSNull
)。
NSObject *a = [NSNull null];
NSObject *b = [NSNull null];
// a == b
NSMutableSet
そして NSMutableOrderedSet
コレクション 異なるオブジェクトしたがって、この「nullオブジェクト」のインスタンスを最大で1つまで含めることができます。
回答№2の場合は1
NSOrderedSet
とそのサブクラス NSMutableOrderedSet
同じオブジェクトの複数のコピーを含むことはできません。 NSNull
〜です シングルトンそれをセットに複数回追加すると、1つのコピーだけが追加されます。
セットに複数のコピーを追加できるようにするには、 NSCountedSet
代わりに:
NSCountedSet set = [NSCountedSet set];
for(int i = 0; i < 10; i++)
{
[set addObject: [NSNull null]];
}
NSLog(@"%ud", [set countForObject:[NSNull null]]);
回答№3の場合は1
あなたの質問には答えがあります。それは言う "ordered collection of distinct objects"
そして "The NSNull class defines a singleton object used to represent null values in collection objects"
. [NSNull null]
はっきりとしたオブジェクトではなく、インスタンスが1つしかないため、カウントに1が表示されます。複数 "null"
このようなオブジェクトを NSMutableOrderedSet
.