2011-09-14 158 views
2

我想有一個列表或者可能包含兩個具有相同整數值的NSNumbers的列表,但似乎內存已經過優化,因此它們是同一個對象。
e.g是否有可能有2個不同的NSNumber對象具有相同的值?

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

那麼N1 N2 ==;

有沒有辦法繞過這個n1!= n2?

+5

你爲什麼要這樣?換句話說:你需要解決什麼問題? – DarkDust

+1

相關問題:[NSNumber> = 13不會保留。一切都會](http://stackoverflow.com/questions/2533355/nsnumber-13-wont-retain-everything-else-will/2533440#2533440) – 2011-09-14 13:57:01

+0

我與DarkDust在這一個。 n1 == n2將它們添加到NSArray或NSSet時沒有什麼區別;它會在兩種情況下做「正確的」事情。 –

回答

4

不是。可可保留了一些小數字(IIRC代表從0到12的整數),而tagged pointers也會阻止這種情況發生。

如果您真的需要這樣做,一種方法是創建一個類,其中包含NSNumber實例。通過這種方式,您可以保證您的課程的不同實例具有不同的地址。

+0

謝謝我以前沒有讀過這個 – mark

相關問題