Dies ist wahrscheinlich entweder eine Compiler-Optimierung oder ein Implementierungsdetail: Da NSNumber unveränderlich ist, müssen sie keine separaten Instanzen sein.
EDIT: wahrscheinlich eine Implementierungsoptimierung, die darüber nachdenkt. Wahrscheinlich NumberWithInt gibt ein Singleton zurück, wenn es anschließend mit derselben Ganzzahl aufgerufen wird.
Mein Designinstinkt sagt mir, dass, wenn die Identität des Scores wichtig ist, im Unterschied zu seinem bloßen Wert, Sie ein Scoring-Objekt anstelle von normalen NSNumbers sortieren sollten.
Aber das beiseite: Im Notfall können Sie einfach NSValue ähnlich wie Sie NSNumber verwenden. Es ist ein wenig mehr Arbeit, um Werte herauszuholen, aber NSValue selbst hat nicht das Koaleszenzverhalten der Instanz NSNumber für kleine Werte.
Ein Code, der alle drei Verhaltensweisen ausübt:
%Vor%Auf meinem Mac ergibt dies eine Ausgabe wie:
%Vor% Da sie denselben hash
-Wert haben, gibt NSNumber
Ihnen einen zwischengespeicherten Zeiger aus der ersten Zuweisung zurück.
Tags und Links objective-c ios pointers nsnumber