Also im Wesentlichen meine Frage ist das, ich erstelle ein NSMutableDictionary mit uint64_t Objekte als Schlüssel.
Gibt es einen besseren Weg, sie zu erstellen, als dies zu tun?
%Vor%Dies würde funktionieren, solange Sie es nicht in eine Binärdatei / sockets / NSData-Objekt / was auch immer eingeschlossen haben. Aber gibt es einen besseren Weg, dies zu tun? Ich möchte wirklich sicher sein, dass das Objekt 64-Bit ist, unabhängig davon, auf welcher Plattform ich es betreibe.
Ich schätze, ich könnte das ganze Problem vermeiden, indem ich immer lange nicht signiert bin, aber natürlich verschwenden Tonnen von Heap-Speicherplatz auf 64-Bit-Maschinen, wenn ich diese Objekte in irgendeiner signifikanten Anzahl zuteile ....
long long
ist 64-Bit auf 64-Bit OS X / iOS-Plattformen. Auf allen OpenStep-absteigenden Plattformen ist numberWithUnsignedLongLong:
korrekt für uint64_t
.
Als ich das letzte Mal nachprüfte, hat die von Ihnen verwendete Factory-Methode keinen Einfluss auf die verwendete Darstellung. Es hängt nur vom Wert der Zahl ab (es sei denn, Sie verwenden eine zu kleine Größe, wodurch sie abgeschnitten wird).
Update: In diesen Tagen lautet die richtige Antwort NSNumber *bobsNumber = @(bob);
.