Core Animation używa wątku tła, aby wykonać to zadanie. Problem polega na tym, że w głównym wątku mam ciężkie obliczenia. Core Animation natychmiast zawiesza się, dopóki nie zostaną wykonane obliczenia. A potem nadal kończy się animacje. Pamiętam, jak czytałem w dokumencie, że CA ma niski priorytet w czasie przetwarzania, co oznacza, że niezależnie od tego, co chce zrobić główny wątek, jest wysoki prio i będzie wykonywany częściej niż jakakolwiek fantazyjna animacja w tym samym czasie.Czy istnieje sposób na zmusić Core Animation do uruchomienia wątku?
Chcę zmusić Core Animation, aby zaplanowała ładowanie tła z głównym wątkiem niezależnie od okoliczności. Lub alternatywnie oddzielny wątek, który będzie wykonywał ciężkie obliczenia poza głównym wątkiem. Próbowałem już tego, ale CA nadal zamarza, aż to zrobi. Oczekuję, że program planujący szybko zmieni czas przetwarzania między urzędem certyfikacji a tymi obliczeniami.
W jaki sposób CA może być zmuszony do dalszej pracy? Jeśli sprawy pójdą trochę wolniej, to w porządku. Ale najważniejsze jest to, że wszystko dzieje się z punktu widzenia użytkownika.
Dzięki. Czy NSOperations są w stanie robić limity czasu? Moje obliczenia są już podzielone na części. Każda z nich jest zaplanowana z opóźnieniem wynoszącym 0,05 sekundy. Więc faktycznie jest trochę wolnego czasu pomiędzy nimi. Jednak, gdy CA musi wykonać wstępne klasyfikacje na początku, twój pomysł oczekiwania na -animationDidStart jest znakiem zachęty. Próbowałem go, opóźniając wezwanie do rozpoczęcia pierwszego bloku obliczeń z 1 sekundą. CA zaczyna się animować, a następnie ciężkie kalorie pojawiają się i CA zawiesza się. To nie pomaga. Wykonuję obliczenia w nowym wątku. –
Chodzi o to, że po obliczeniu każdego bloku danych, nastąpiła aktualizacja w interfejsie użytkownika. Te aktualizacje są szybkie i płynne zgodnie z oczekiwaniami. Byłoby idealnie, gdyby był sposób zaplanowania tego wszystkiego w taki sposób, aby CA współuczestniczył w czasie procesora tym ... zajrzeniem do rzeczy NSOperationQueue, chociaż nie brzmią one tak, jakby zapewniały limity czasowe, takie jak opóźnione wykonanieWybór połączeń wykonuje (?) –
NSOperationQueue tworzy wątki dla twoich NSOperations, w razie potrzeby.Jest rozsądnie inteligentny, jeśli chodzi o zarządzanie zadaniami, które są wykonywane, ale nie wiem, czy ma on podobną świadomość systemu na iPhone'ie, jak na Snow Leopard (gdzie jest nałożony na GCD). Obsługuje także zależności między zadaniami, które możesz wykorzystać na swoją korzyść. –