Objective C NSStack und NSQueue?
In Java gibt es eine schöne Bibliothek-Klasse in java.util.Stack implementiert die push-und pop-Methoden.
Gibt es etwas ähnliches in Objective C?
Fand ich nur MutableArray. Scheint komisch, ich hätte die Implementierung einer solchen grundlegenden Sache wie ein stack, es muss etwas wie "NSStack", "NSQueue" und ähnliche Sachen.
- mögliche Duplikate von Tut Sie das iOS-SDK bieten queues und stacks?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich eine stack-Implementierung hier. Es nutzt
NSMutableArray
zu tun die schmutzige Arbeit, die ist wirklich nicht schlecht. Aber es gibt nichts, erbaut auf dem Fundament.NSMutableArray
und Sie werden in Ordnung sein.Niemand sollte vergessen, Objective-C bietet eine sehr schöne Variante: Objective-C++. Und die C++ standard-Bibliothek stellt Datenstrukturen, die Sie, gut benötigen, getestet, debugged, stabil und so schnell wie möglich. Am besten, Sie arbeiten mit ARC perfekt. Bestest, können Sie sogar wählen zwischen
__weak
oder__strong
Zeiger, wenn Sie fühlt es.Haben Sie einen Blick auf
<queue>
und<stack>
.Sagte,
NSMutableArray
funktioniert sehr gut für Stapel:-addObject:
,-lastObject
und-removeLastObject
wird die Arbeit machen, schön mit guter Leistung.C++ kann ausführlich sein. Schrecklich langatmig. Aber es haben auch einige Eleganz hier und da, und einige sehr mächtige Konstrukte. Einige Teile der standard-Bibliothek wirklich glänzen, und die Datenstrukturen sind unter den Perlen einmal die alien-syntax beherrscht. Es versteckt werden kann mit ein paar typedefs sowieso.
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_IOBluetoothRFCOMMChannel", referenced from: objc-class-ref in BluetoothRfcommPort.o
So, manchmal ist es nicht eine option, Obj-C++, es sei denn, ich bin fehlt etwas.Du (wie ich) können sich sorgen über die dequeue-Leistung mit NSMutableArray, weil in der Warteschlange entfernen, müssen Sie entfernen das erste Objekt in der NSMutableArray, und die Entfernung verursacht die Verlagerung von Objekten im array. Das ist nicht notwendig, jedoch basierend auf der Prüfung habe ich hier: für ein NSMutableArray mit 100000 Objekte, entfernen Sie alle Objekte, die durch das kontinuierliche entfernen des ersten Objekts ist 100ms langsamer als durch das kontinuierliche entfernen des letzten Objekts. Ich habe auch im Vergleich mit einem NSMutableArray mit zwei NSMutableArrays. Obwohl es möglich ist zu vermeiden, entfernen erste Objekt durch die Verwendung von zwei NSMutableArrays, die verwendet werden, als zwei stacks, die double-stack-Lösung ist tatsächlich langsamer.
soweit ich weiß, es gibt nichts wie stack und queue in der sdk.
es ist ein Beispiel für queue implementarion hier.