Fügen Sie C Zeiger zu NSMutableArray hinzu

8

Ich schreibe ein Objective-C-Programm, das sich mit Low-Level-Bildspeicher beschäftigt. Ich verwende ANSI-C-Strukturen für meine Datenspeicherung - Full-blast-Objekte scheinen übertrieben zu sein, da die Daten, die ich speichere, 100% Daten sind, ohne Methoden, um mit diesen Daten zu arbeiten. Insbesondere schreibe ich einen anpassbaren Posterisierungsalgorithmus, der auf einer Reihe von Farben beruht - Hier wird es schwierig. Ich speichere meine Farben als Strukturen von drei Floats und ein Integer-Flag (speziell für den Posterisierungsalgorithmus). Alles läuft gut, bis auf eine Sache ...

[aktuelle Frage]

Ich kann nicht herausfinden, wie man einem NSMutableArray Zeiger hinzufügt! Ich weiß, wie man ein Objekt hinzufügt, aber das Hinzufügen eines Zeigers zu einer Struktur scheint schwieriger zu sein - ich möchte nicht, dass NSMutableArray meinen Zeiger dereferenziert und die Struktur als eine Art merkwürdiges Objekt behandelt. Ich möchte, dass NSMutableArray den Zeiger selbst zur Auflistung hinzufügt. Wie gehe ich dabei vor?

Vielen Dank im Voraus,

G

    
Georges Oates Larsen 13.04.2012, 05:07
quelle

4 Antworten

15

Dafür gibt es eine Klasse: NSPointerArray . Siehe Apples Dokumente hier . Für willkürliche Zeiger werden Sie wahrscheinlich die Optionen NSPointerFunctionsOpaqueMemory und NSPointerFunctionsOpaquePersonality verwenden wollen.

Wenn NSPointerArray nicht verfügbar ist (z. B. wenn Sie für iOS entwickeln), können Sie Ihre Zeiger mit -[NSValue valueWithPointer:] umbrechen, solange der Overhead von wrapping & amp; Auspacken erweist sich nicht als zu langsam.

    
andyvn22 13.04.2012, 05:14
quelle
4

Sie können Ihre Zeiger in % co_de einfügen % Objekte.

    
Carl Norum 13.04.2012 05:16
quelle
3

Beispiel:

%Vor%     
DaoYan.Tang 11.07.2013 10:48
quelle
1

Wenn ein NSMutableArray wirklich das ist, was Sie wollen, können Sie diesen Ansatz verwenden:

%Vor%

Sie möchten jedoch NSObject s nicht dort einfügen - sie werden nicht beibehalten.

Bei diesem Ansatz können die Elemente Ihres CF / NS-Arrays Zeiger oder beliebige Grundwerte sein, deren Größe einem Zeiger entspricht.

    
justin 13.04.2012 05:18
quelle