Ich habe einen Datenladevorgang, der vom Hauptthread ausgeführt werden muss, um potenzielle Blockierungsprobleme zu vermeiden. Um dies zu tun, verwende ich eine NSOperationQueue und NSOperations.Wie Sie eine NSOperation blockieren, bis eine NSOperationQueue beendet ist?
Ein Problem, das aufgetreten ist, besteht jedoch darin, dass eine der Operationen vorhanden ist, um zusätzliche Operationen basierend auf eingehenden Informationen zu generieren. Der Versuch, dieses Problem zu lösen, löste auch einige kleinere Probleme, die ich anderswo hatte, da die Lösung, die ich traf, darin bestand, der NSOperation eine eigene Warteschlange für Teilaufgaben zu geben.
Das Problem ist, dass, sobald 'main' beendet wird, die NSOperation als 'fertig' markiert wird, unabhängig davon, ob die Unterwarteschlange fertig bearbeitet ist oder nicht; Wie überschreibe ich dieses Verhalten?
Klingt, als ob Sie nach einer [gleichzeitigen 'NSOperation'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html) suchen? –
@CarlVeazey Nicht ... genau, aber es sieht so aus, als ob die Schritte, die verwendet werden, um eine gleichzeitige NSOperation zu erstellen, dasselbe tun, nach dem ich eigentlich suche. Sie müssen überschreiben, wie die Startmethode isFinished/isExecuting behandelt, und ich denke, genau das muss ich hier tun. Ich muss den Start überschreiben, damit es nicht gesetzt wird. Was bedeutet, die KVO-Sachen zu handhaben, wenn ich diese Eigenschaften ändere, oh Freude. – RonLugge
@CodaFi Ich bin mir nicht sicher, ob ich mich klar ausgedrückt habe, aber die Antwort, die du vorgeschlagen hast, scheint keinen Sinn zu ergeben. Abhängigkeiten verhindern, dass eine Operation ausgeführt wird, sie verhindern jedoch nicht, dass sie beendet wird, sobald sie mit der Ausführung begonnen hat. Zumindest scheinen das die Referenzen zu sagen. – RonLugge