Ich versuche, eine Objective C-Klasse zu schreiben, die ein OpenGL-Polygon zeichnet. Ich habe es geschafft, dies mit einem NSMutableArray zu tun, um meine Eckpunkt-Koordinaten zu speichern. Dies scheint jedoch ein wenig ineffizient zu sein, da jedes Mal, wenn ein Objekt gezeichnet wird, eine Schleife über das Array erforderlich ist, um das NSMutableArray in ein ccVertex2F [] -Array zu konvertieren.Objective C primitive c-Array-Instanzvariable bei Klasseninitialisierung zuweisen
Was ich tun möchte, ist ein ccVertex2F Array als Instanzvariable. Setzen Sie dann bei der Initialisierung die Größe auf die Anzahl der Punkte. Dies führt jedoch zu einem Fehler, da die Größe meines Arrays immer Null ist.
Ich bin erfahren in der Programmierung von Java, aber völlig neu in C und Speicherverwaltung. Bisher ist dies, was ich habe:
@interface PolygonNode : CCNode {
ccVertex2F * _glPoints ;
}
@property (nonatomic, readwrite) ccVertex2F * glPoints ;
@end
Mein Verständnis ist, dass ich eine Instanzvariable bin zu schaffen, die ein Zeiger auf eine ccVertex2F ist.
In meiner Init-Methode habe ich folgende:
ccVertex2F sizedGlPoints [numberOfPoints * sizeof(ccVertex2F)];
_glPoints = &sizedGlPoints;
Das Ziel war die Instanz-Variable Punkt auf meine neue richtigen Größe Array zu machen. Wenn ich jedoch die Größen nach diesem Code drucke, ändert sich die _glPoints-Größe nicht.
Der Kern von dem, was ich tun möchte, ist in der Lage zu sein, die Größe meines Arrays zu wählen, wenn ich die Klasse initialisiere, so dass ich keinen Speicher verschwenden werde.
Dank für die Antwort. Das hat perfekt funktioniert! –