Badałem już numer NSProgress
, ale znalazłem brakującą dokumentację, odniesienie do klasy i samouczki. Zastanawiam się głównie, czy mój NSProgress ma zastosowanie do mojego przypadku użycia. Dokumentacja referencyjna klasy odnosi się alternatywnie do suboperations
lub subtasks
, mogę się mylić, ale interpretowałem suboperations
, aby określić przypadek, w którym NSOperation zarządza grupą innych NSOperations
. Przykład mojego użycia jest następujący:Używanie NSProgress z zagnieżdżonymi informacjami NIperations
- Utwórz operację
Upload All Items in Group
dla każdej istniejącej grupy. - Dodaj każdą z tych operacji do
NSOperationQueue
. - Każda operacja
Upload All Items in Group
utworzy operacjęUpload Item
dla każdego elementu w swojej grupie. Wszystko to zostaje dodane doNSOperationQueue
zarządzanego przez operację.
bym oczekiwać NSProgress
wspierać to, i pozwoli mi propagować postępy z zagnieżdżonych operacji (Upload Item
pracy) do operacji nadrzędnej, a następnie w końcu do głównego wątku i interfejsie użytkownika. Ale miałem trudności z jej implementacją, wydaje się, że jest to bardziej przeznaczone dla długich operacji, które wykonują cały swój kod na jednym wątku tła, ale mają oddzielne "sekcje", które ułatwiają określenie, kiedy postęp został dokonany, jeśli to tak jest w przypadku użycia terminu suboperation
jest trochę mylące, ponieważ przywodzi na myśl użycie zagnieżdżonego NSOperations
.
Dziękuję za pomoc, którą możesz podać, i daj mi znać, jeśli będą potrzebne dodatkowe informacje.
Nie powinieneś wywoływać '[p staćCurrentWithPendingUnitCount: numGroups];' poza pierwszą pętlą for? – Eric
@Eric To spowodowałoby, że relacja między pod-postępami (potencjalnie) była nierówna pod względem ich proporcji postępu nadrzędnego. Inaczej mówiąc, jeśli chcesz, aby każdy plik reprezentował 1 jednostkę postępu w rodzicu, musisz to zrobić w ten sposób. Jeśli jesteś * pewien *, że pod-postępy są określone w niektórych wzajemnie podzielonych jednostkach, takich jak bajty, (prawdopodobnie bezpieczne założenie tutaj, ale nie wszędzie) i chcesz wystawić tę jednostkę jako część macierzystego raportowania postępu, to tak, możesz przenieść go na zewnątrz. – ipmcc
To jest niesamowita odpowiedź, dziękuję. – Sam