Um Ihre letzte Frage zuerst zu beantworten: Wenn Sie Instanzen von Objective-C-Objekt speichern (das, wie Sie sagen, erben von NSObject) dann ja, verwenden Sie NSMutableArray. Dies funktioniert jedoch nicht für primitive Typen (wie int
, BOOL
, char
, char*
usw.).
Objective-C verwendet die C-Methode zum Deklarieren von Arrays mit einem Vorbehalt: Sie können keinen Speicher auf dem Stack zuweisen (was in C der Fall ist), nur auf dem Heap. Das bedeutet, dass Sie malloc
(bevorzugen Sie NSAllocateCollectable()
auf Leopard oder später) und free
verwenden müssen, um den Speicher zu verwalten. Außerdem deklarieren Sie das Array als einen Zeiger auf ein Array oder Zeiger. Etwas wie folgt aus: (Anmerkung:. Aus der Luft gezogen wird, nicht getestet)
Price **prices = malloc(numberOfEntries * sizeof(Price*));
...
free(prices);
eine NSMutableArray Verwendung ist in der Regel viel einfacher, als Sie Ihre eigenen Arrays zu verwalten. Beachten Sie nur die Speicherverwaltungsregeln: Sammlungen rufen -retain
auf einem Objekt auf, wenn es eingefügt wird, und -release
darauf, wenn es entfernt wird (oder auf alle Objekte, wenn die Sammlung aufgehoben wird).
Ich bin nicht ganz sicher, was Sie fragen ... können Sie umformulieren? Willst du sagen, dass du ein Array von Instanzen der Preisklasse haben willst, oder ein NSArray, das ein Ivar der Preisklasse ist ... oder etwas anderes? Was genau versuchen Sie zu erreichen, dass Sie nicht können? – Walker
Und Sie sagen, Sie können ein "benutzerdefiniertes Array" erstellen? in anderen Sprachen. Wie in C? Wenn es C/C++ ist, könntest du mir ein Beispiel dafür geben, wie du es dort machen würdest und wie du deine Frage klären würdest, denn ich weiß nicht genau, was du fragst. – Walker