Objective-C primitive Arrays
-
20-09-2019 - |
Frage
Ich möchte mit Primitiven in OBJ-c (Wähler) eine änderbaren Array haben. Was ist der empfohlene Weg, dies zu tun? NSArray
und die können nur Objekte halten.
Lösung
Sie sollten einen NSValue
verwenden, um die Wähler oder anderen Urtyp Sie wickeln müssen. In Cocoa SEL ist eine Art Zeiger, so dass Sie [NSValue valueWithPointer:whatever]
es konstruieren können und [value pointerValue]
es raus. Oder im Allgemeinen können Sie [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
verwenden; Dies funktioniert für jede Art.
Andere Tipps
Wenn Sie ein Array von SEL
Objekte speichern möchten, wäre die einfachste Sache sein, die SEL
s zu NSString
s in einem NSStringFromSelector()
mit der NSMutableArray
Funktion, speichern Sie sie konvertieren und sie dann zu SEL
s konvertieren zurück, wenn Sie sie herausziehen NSSelectorFromString()
mit Funktion.
Anders als ein C-Stil-Array Verwaltung selbst (das ist definitiv nicht die beste Option, IMO), die einzige Möglichkeit ist NSArray
/ NSMutableArray
zu verwenden, und speichern Sie die Nummern NSNumber
verwenden. Es ist etwas ärgerlich, den Wert, um aus als mit dem tatsächlichen numerischen Typ, aber es macht Dich frei von der Array-selbst-Speicher zu verwalten.
Da die primitiven Typen sind in der Regel nur Zahlen (seien sie Integer- oder Floating-Point) oder Zeiger, was ist das Problem mit den Klassen verwendet, um die für Ihre Zwecke einpacken? Ein NSMutableArray
von NSNumbers
zum Beispiel?