2012-06-16 10 views
11

Mam UIScrollView, w którym umieszczam garść widoków podczas przewijania. to pobieranie obrazów z punktu końcowego api. Problem polega na tym, że przewijanie nie wydaje się tak płynne, jak powinno być. Wiem, że tak jest, ponieważ w większości coś blokuje główny wątek. Przeszukałem cały kod i skomentowałem jakikolwiek kod aktualizacji UI, ale szybkie przewijanie wciąż jest opóźnione.Jaki jest najlepszy sposób na znalezienie kodu blokującego główny wątek?

Jakieś wskazówki na temat tego, jaki jest najlepszy sposób na sprawdzenie, która część kodu blokuje główny wątek?

Odpowiedz

7

Instrumenty. Jest absurdalny - nie ma w tym nic takiego. Nawet jabłko documentation wspomina o znalezieniu zadań związanych z dużym CPU.

Osobiście polecam profilowanie czasu. W tym doskonałym samouczku można znaleźć here.

+0

czy rzeczywiście można znaleźć coś, co blokuje główny wątek za pomocą instrumentów? – aherlambang

+0

Tak, więcej szczegółów proszę: który konkretny szablon Instruments pomoże mi znaleźć operację blokującą mój główny wątek? Nie jest to wymienione w połączonych dokumentach Apple lub nie jest oczywiste. –

+0

To zależy całkowicie od twojego kodu. Instrumenty mogą w niektórych przypadkach znajdować zakleszczenia gwintów, ale ogólnie blokada gwintów jest zwykle zadaniem debugowania, które jest bardziej odpowiednie do ręcznego sprawdzania śladów stosu. Poza tym wiele sposobów na zakleszczenie nici jest obfite i zróżnicowane, co sprawia, że ​​rozwiązanie typu "catch-all" jest bardzo trudne ze strony nawet Apple. – CodaFi

Powiązane problemy