我想要一个列表或集合,其中可能包含两个具有相同整数值的NSNumber但似乎内存已经过优化,因此它们是同一个对象。
e.g
NSNumber* n1=[NSNumber numberWithInt:10];
NSNumber* n2=[NSNumber numberWithInt:10];
然后n1 == n2;
有没有办法解决这个问题,以便n1!= n2?
答案 0 :(得分:4)
不是真的。 Cocoa保留了一个小数字缓存(IIRC表示从0到12的整数),而tagged pointers也会阻止它。
如果您确实需要,可以选择创建一个包含NSNumber
个实例的类。通过这种方式,您可以保证您班级的不同实例具有不同的地址。