Die Erklärung, Eigenschaften, Synthese und Umsetzung von int [] - Arrays in Objective-C
Wie erklären Sie sich, legen Sie die Eigenschaften, synthetisieren und implementieren Sie ein int-array der Größe 5 in Objective C? Ich Schreibe diesen code für ein iphone app. Danke.
- wenn Sie kann nicht vorbei an diesem Schritt empfehle ich herzlich, dass Sie WIRKLICH bekommen MUSS Aaron Hillegas' Buch über die Cocoa-Programmierung.
- Die Sache ist, dass ich weiß, ich könnte Weg mit mit einem NSMutableArray oder einfach nur mit 5 separaten ints, da die Größe ist fest auf 5, aber mit einem array von ints wäre viel eleganter. Ich würde auch gerne wissen, wie für die Zukunft. Ich habe geschrieben in mehreren anderen Sprachen, aber ich kann einfach nicht scheinen zu finden, eine definitive Antwort, wie es zu tun in objective c für das iphone.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die "Kakao-y", was zu tun ist, verstecken Sie die int-array, selbst wenn Sie es innerlich. So etwas wie:
Hier ist etwas zu versuchen. In der .h-Datei:
Dann, in der .m-Datei:
Wenn Sie @synthetisieren, Sie müssen malloc/calloc das array selbst, wahrscheinlich während init().
Alternativ könnten Sie auch schreiben Sie Ihre eigenen accessor-Funktionen und haben Sie malloc/calloc, wenn aufgerufen wird, bevor das array reserviert wurde.
So oder so, du wirst möchten kostenlos das array in der dealloc () - Methode.
Dies ist wahrscheinlich naiv und falsch, wie ich gerade Anlauf auf Objective-C selbst, aber bisher scheint es zu funktionieren für mich.
Sollten Sie nicht verwenden int in diesem Fall, wenn Sie wollen, um ein array zu verwenden. Verwenden NSNumber und setzen Sie diese 5 NSNumbers in einem NSMutableArray.
Ist der code für die Schnittstelle und die Implementierung mit synthetisieren(nicht getestet, BTW). Was versuchen Sie zu erreichen?
Gute, schnelle intro
Habe ich eine Klasse variable:
So, ich könnte die normalen myInt[1]=0 syntax in meinem code habe ich eine Eigenschaft, die eine Ganzzahl zurückgibt Zeiger:
Dann erstellt der folgende getter-Methode:
Jetzt kann ich mit so etwas wie Klasse.myInt[1]=0;
Gut, ich weiß es nicht sicher, dass das funktioniert, aber es scheint. Ich dachte, ich würde setzen Sie dieses heraus dort, wenn jemand anders es versuchen will.
Was auch immer Sie tun, Sie müssen sich bewusst sein, die Folgen.
Ein integer-array ist die Referenz nicht gewertet. Sie weiß nicht, wie viele Leute Zugriff darauf haben. Sie wissen nicht, wer sollte freigeben und wenn ja, Wann. So können Sie ganz einfach eine Eigenschaft vom Typ int*. Der setter wird in einen Zeiger, und speichern Sie es in die Instanz-variable. Der getter wird es wieder den Inhalt der Instanz-Variablen. Es funktioniert einfach.
ABER Sie wissen nicht, Wann das array zugewiesen werden soll oder freigegeben werden. Wenn Sie einige statische arrays (zum Beispiel vier verschiedene Tabellen mit zahlen), kein problem. Aber wenn Sie erstellen Sie ein Integer-array mit malloc (), sollte jemand kostenlos () es. Also, Wann wird dies geschehen?
Da zu bewältigen, die die Lebensdauer eines array manuell ist Müll, ich würde empfehlen, dass Sie entweder benutzen Sie einfach ein NSArray von NSNumber, oder du schaust bei NSPointerArray, die missbraucht werden kann, um Speicher-arrays von Ganzzahlen, die mit reference counting, oder Sie erstellen Ihre eigene Klasse wie die Lotterie-Klasse in einer vorherigen Antwort, nur etwas flexibler.