Wenn Sie ein Array von Ganzzahlen erstellen möchten, können Sie NSInteger verwenden? Müssen Sie NSNumber verwenden? Wenn ja, warum dann?
ios
objective-c
Neuromant
quelle
quelle
Antworten:
Sie können ein einfaches altes C-Array verwenden:
Oder Sie können ein
NSArray
oder verwendenNSMutableArray
, aber hier müssen Sie jede Ganzzahl in einerNSNumber
Instanz einschließen (daNSArray
Objekte für Klasseninstanzen ausgelegt sind).quelle
NSArray
, bin ich sicher, dass Sie den Leistungseinbruch nicht spüren werden.C-Array:
Objective-C-Array:
Swift Array:
Das ist auch richtig:
NB: Arrays sind stark in Swift typisiert. In diesem Fall schließt der Compiler aus dem Inhalt, dass das Array ein Array von Ganzzahlen ist. Sie können auch diese explizite Syntax verwenden:
Wenn Sie eine Reihe von Doppel möchten, würden Sie verwenden:
oder:
quelle
Wenn Sie ein NSArray verwenden möchten, benötigen Sie eine Objective-C-Klasse, um es einzufügen - daher die NSNumber-Anforderung.
Das heißt, Obj-C ist immer noch C, sodass Sie bei Bedarf reguläre C-Arrays verwenden und reguläre Ints anstelle von NSNumbers speichern können.
quelle
Sie können CFArray anstelle von NSArray verwenden. Hier ist ein Artikel, der erklärt, wie.
Gleiches gilt auch für die CoreFoundation-Version der anderen Container.
quelle
Ich habe einen einfachen Objective C-Wrapper um das gute alte C-Array erstellt, der bequemer verwendet werden kann: https://gist.github.com/4705733
quelle
Wenn die Reihenfolge Ihrer Ganzzahlen nicht erforderlich ist und nur eindeutige Werte vorhanden sind
Sie können auch NSIndexSet oder NSMutableIndexSet verwenden. Sie können ganz einfach Ganzzahlen hinzufügen und entfernen oder prüfen, ob Ihr Array eine Ganzzahl mit enthält
Weitere Informationen finden Sie in der Dokumentation .
quelle
NSSet
(und der Verwendung von Ganzzahlen, die in eine eingeschlossen sindNSNumber
)?Ich denke, es ist viel einfacher, NSNumbers zu verwenden. Das alles was Sie tun müssen:
quelle
for
oder nur ein anderes Array für die Zahlen verwenden, und dannarrayWithArray
.