Ich habe NSProgress
untersucht, aber die vorhandene Dokumentation, Klassenreferenz und Anleitungen fehlen. Ich frage mich hauptsächlich, ob meine NSProgress auf meinen Anwendungsfall anwendbar ist. Die Klassenreferenzdokumentation bezieht sich alternativ auf suboperations
oder subtasks
, ich mag mich irren, aber ich interpretierte suboperations
als einen Fall, in dem eine NSOperation eine Gruppe von anderen NSOperations
verwaltet. Ein Beispiel für meinen Anwendungsfall ist wie folgt:Verwenden von NSProgress mit geschachtelten NSOperationen
- Erstellen Sie eine
Upload All Items in Group
Operation für jede Gruppe, die existiert. - Fügen Sie diese Operationen zu
NSOperationQueue
hinzu. - Jede
Upload All Items in Group
Operation wird eineUpload Item
Operation für jedes Element in ihrer Gruppe erstellen. Diese werden alle zu einem von der Operation verwaltetenNSOperationQueue
hinzugefügt.
würde ich NSProgress
erwartet, dies zu unterstützen, und mir erlauben Fortschritte aus den verschachtelten Operationen zu propagieren (Upload Item
Betrieb) an den Mutterbetrieb und dann schließlich zu dem Haupt-Thread und die Benutzeroberfläche. Aber ich hatte Schwierigkeiten, dies zu implementieren, es scheint, als ob NSProgress
eher für lange Operationen gedacht ist, die ihren gesamten Code auf einem Hintergrundthread ausführen, aber separate "Sektionen" haben, die es leicht machen zu bestimmen, wann der Fortschritt gemacht wurde ist der Fall, dann ist die Verwendung des Begriffs suboperation
ein bisschen irreführend, da es an die Verwendung von verschachtelten NSOperations
erinnert.
Vielen Dank für Ihre Hilfe, und lassen Sie mich wissen, wenn zusätzliche Details benötigt werden.
Sollten Sie '[p ancomeCurrentWithPendingUnitCount: numGroups]; 'nicht außerhalb der ersten for-Schleife aufrufen? – Eric
@Eric Das würde die Beziehung zwischen den Teilprogresses (potenziell) ungleich in Bezug auf ihren Anteil des übergeordneten Fortschritts machen. Anders gesagt, wenn Sie möchten, dass jede Datei 1 Einheit Fortschritt im Elternteil darstellt, müssen Sie dies auf diese Weise tun. Wenn Sie * sicher * sind, dass die Unterfortschritte in einigen gemeinsam genutzten Einheiten wie Bytes angegeben werden (wahrscheinlich eine sichere Annahme, aber nicht überall) und Sie diese Einheit als Teil der Elternfortschrittsberichte verfügbar machen wollen, dann ja, Du könntest es nach draußen bewegen. – ipmcc
Das ist eine tolle Antwort, danke. – Sam