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.

War es hilfreich?

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 SELs zu NSStrings in einem NSStringFromSelector() mit der NSMutableArray Funktion, speichern Sie sie konvertieren und sie dann zu SELs 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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top