是否可以有2个不同的NSNumber对象具有相同的值?

时间:2011-09-14 13:52:49

标签: objective-c cocoa

我想要一个列表或集合,其中可能包含两个具有相同整数值的NSNumber但似乎内存已经过优化,因此它们是同一个对象。
e.g

NSNumber* n1=[NSNumber numberWithInt:10];
NSNumber* n2=[NSNumber numberWithInt:10];

然后n1 == n2;

有没有办法解决这个问题,以便n1!= n2?

1 个答案:

答案 0 :(得分:4)

不是真的。 Cocoa保留了一个小数字缓存(IIRC表示从0到12的整数),而tagged pointers也会阻止它。

如果您确实需要,可以选择创建一个包含NSNumber个实例的类。通过这种方式,您可以保证您班级的不同实例具有不同的地址。