iPhone Simulator nagle zaczął działać bardzo wolno

319

Pracuję nad aplikacją w symulatorze iPhone'a od kilku tygodni i działa ona dobrze do tej pory, ale nagle zaczęła działać bardzo wolno, zarówno podczas ładowania treści, jak i animacji. Nie wprowadziłem żadnych zmian w kodzie od czasu ostatniego pomyślnego przetestowania.

Próbowałem ponownie uruchomić symulator (wiele razy), usunąć aplikację i przeprowadzić całkowicie czystą przebudowę, ale bez powodzenia. Sprawdziłem również użycie procesora przez monitor, gdy symulator jest uruchomiony i używam tylko około 30% mojego procesora i 40% pamięci.

W pełni rozumiem, że symulator nigdy nie jest tak szybki jak samo urządzenie, ale wydaje się dziwne, że nagle zaczął działać wolno po tak długim czasie, a przez powolność mam na myśli mniej niż jedną czwartą jego oryginalnej prędkości.

Finglish
źródło
9
Czy nacisnąłeś shift trzy razy z rzędu?
Rey Gonzales,
1
Trudno wiedzieć, gdybym zrobił, co powinienem zrobić? Czy to to samo, co Przełącz powolne animacje? Jeśli tak, próbowałem to przełączyć kilka razy bez powodzenia.
Finglish
Naciśnij trzy razy ponownie Shift. Tak, to jest to samo.
Rey Gonzales,
96
Naciśnij CMD + T, aby przełączyć w zwolnionym tempie
Dominic
Przed zadaniem takich pytań sprawdź, co mogło się stać. W oknie wyjściowym Xcodes widać „Powolne animacje są teraz włączone”, co wyraźnie jest tutaj pomocną wskazówką.
zwróć true

Odpowiedzi:

803

W symulatorze iOS na pasku u góry kliknij DebugToggle Slow Animations(lub Slow AnimationsXcode 10+). Możliwe, że przypadkowo go włączyłeś.

Metabble
źródło
1
Próbowałem tego, ale nie robi to żadnej różnicy. Próbowałem również uruchomić ponownie po przełączeniu, ale nadal jest bardzo powolny. Również kwestia prędkości nie wydaje się ograniczać do animacji.
Finglish
@ Finglish Cóż, przynajmniej najbardziej prawdopodobna przyczyna jest na uboczu. Nie jestem pewien, co jeszcze może być nie tak. Czy masz wersję źródła sprzed spowolnienia, aby porównać go teraz? Co zmieniło się między czasem, kiedy było szybkie, a teraz?
Metabble
1
Nie jestem pewien, dlaczego to zadziałało, ale zapisałem, ale zrobiłem nową kopię projektu i ponownie uruchomiłem symulator i wszystko wróciło do pełnej prędkości. Nie jestem jednak pewien, czy to tylko zbieg okoliczności.
Finglish
1
Och, wow, to prawdopodobnie zdarza się wielu (w tym mnie) z powodu mapowania na ⌘T, więc jeśli próbujesz otworzyć przeglądarkę lub kartę terminalu, prawdopodobnie przełącza się wolne animacje ......
Smitty
1
@Smitty właśnie to mi się przydarzyło haha ​​:)
DavidA
186

Simple Command+ Tnaprawi ten problem.

Command+ Tprzełącza symulatory Slow Animations, które można znaleźć w menu symulatora: Debug-> Slow Animations.

Tyler Hack
źródło
10
Przypadkowo nacisnąłem tę kombinację klawiszy, gdy korzystam z Chrome. lol (otwieranie nowej karty)
mr5
4
Apple naprawdę powinno pomyśleć o innej kombinacji klawiatury.
sonlexqt
164

Przejdź do menu debugowania symulatora i wybierz „Przełącz powolne animacje”.

Aktualizacja: w Xcode 10 to tylko „Powolne animacje”:

Menu debugowania symulatora

Caleb
źródło
6
Założę się, że każda osoba, która patrzy na tę odpowiedź, uderzyła cmd + T, myśląc, że są w innej aplikacji, a następnie zaczęła otrzymywać powolne animacje. Apple powinien zmienić mapowanie klawiszy cmd + T na coś bardziej tajemniczego i rzadziej używanego.
cs01
57

Wybierz symulator,

Wybierz Debuguj i odznacz powolną animację.
skrót klawiaturowy + t

To dla mnie praca.

Urvish Modi
źródło
38

Jeśli opcja Cmd-T (wolne animacje) nie działa dla Ciebie i Debug -> Slow Animationsjest wyłączona, ale nadal masz wolne animacje, spróbuj Simulator -> Reset Contents and Settings(lub ewentualnie Hardware -> Erase All Content and Settings). To działało dla mnie, gdy żadna inna odpowiedź tutaj nie zadziałała. Czy ktoś ma sugestię, dlaczego?

Również dołączenie debugera (w ogóle) może spowodować, że animacje będą bardzo wolne.

jcollum
źródło
1
To działało dla mnie, ale jestem też ciekawy dlaczego. Rozwijam się w React Native i zastanawiam się, czy moja aplikacja zaczęła zajmować zbyt dużo miejsca w AsyncStorage. To tylko przypuszczenie.
koczownik
próbowałem już wszystkiego, ale nic nie naprawia powolności, którą widzę, widzę szybkie animacje, ale powolny ruch, jak w zestawie scen, spadająca kula i idzie tak wolno, że można zobaczyć, jak porusza się z prędkością 1 kl./s i zajmuje około 10 s uderzył o podłogę
Repardeimaj
To nie jest już dostępne w bieżącej wersji Xcode, ale istnieje Hardware -> Erase All Content and Settings...opcja.
koczownik
1
Hardware -> Erase All Content and Settings...jest biletem.
nomad
W moim przypadku to nie pomaga stackoverflow.com/a/59626207/3826175
mikep
32

Kolejna potencjalna poprawka dla użytkowników React-Native:

Chrome nie nadaje priorytetu Javascript działającemu na kartach, które nie są na pierwszym planie. Jeśli więc włączyłeś zdalne debugowanie, pamiętaj o umieszczeniu debugera we własnym oknie.

Brandon
źródło
29

Podczas korzystania z symulatora przypadkowo nacisnąłeś wolną animację podczas debugowania. Uruchom więc Symulator -> Debuguj -> Odznacz Powolną animację.

Digvijay Rajput
źródło
Czy mógłby Pan uściślić swoją odpowiedź, dodając nieco więcej opisu oferowanego rozwiązania?
abarisone
13

Myślę, że przez pomyłkę nacisnąłeś Command + T zamiast Command + R.

Saad Ur Rehman
źródło
1
Command + R, aby odświeżyć. Spędź 20 minut, próbując dowiedzieć się, jak zrujnowałem moją aplikację. Uruchom ponownie komputer Mac w ostateczności. Chodź tutaj, naucz się czegoś nowego i raduj się.
ThunderHorse
7

Nie mam jeszcze przedstawiciela, który mógłby zostawić komentarz, ale głosowałem tu kilka odpowiedzi i chciałem powiedzieć więcej. Miałem problem z powolnymi animacjami w symulatorze iOS, szczególnie podczas obracania, i znalazłem ten post za pośrednictwem Google. Rzeczywiście, jakoś musiało być włączone „Powolne animacje”, ponieważ naprawiły go trzy zmiany. Na początku nie sądziłem, że to problem, ponieważ obok opcji „Przełącz wolne animacje” nie ma zaznaczenia. Okazuje się, że nigdy nie ma znacznika wyboru ani żadnego wskazania z menu, czy jest włączone, czy wyłączone. Więc po prostu spróbuj go przełączyć i sprawdź, czy obrót / nawigacja jest szybsza / wolniejsza.

Więc dziękuję!

Geoff Hom
źródło
Głosowano z powodu dodatkowych informacji o braku wizualnej informacji zwrotnej w Xcode
Paul Waldo,
5

Symulator -> Zresetuj zawartość i ustawienia działa dla mnie. Wydaje się, że problem pojawia się ponownie, gdy zdalnie debuguję mój kod macierzysty reagowania. Może to być również związane z AsyncStorage, jak sugerował nomad .

smmaca
źródło
1
Zatrzymanie zdalnego debugowania naprawiło mój problem. Dzięki!
liquidpenguins
1

Możesz spróbować wyłączyć zdalne debugowanie (Cmd-D -> Zatrzymaj zdalne debugowanie JS). To zwykle przyspiesza.

Heinrisch
źródło
0

Gdy debugowanie chrome jest aktywne, a karta przeglądarki nie jest na pierwszym planie, emulator również działa wolno. Dla mnie postanowiłem umieścić przewodnik na pierwszym planie.

Josimar
źródło
-1

Nie chodzi tylko o powolne animacje. Symulator Xcode ma bardzo niską wydajność w skali globalnej. To błąd Apple. Zgłosiłem to za pośrednictwem Asystenta opinii . Stworzyłem demo z kodem pokazującym, że symulator jest 200 razy wolniejszy niż jakiekolwiek stare prawdziwe urządzenie. Odkryłem, że kod JavaScript z obiektem Date wykonanym w WKWebView jest uciążliwy dla symulatora. Zmiana opcji w symulatorze nie pomaga w moim przypadku. Zobacz jsfiddle https://jsfiddle.net/kjms16cw/ Mam nadzieję, że Apple naprawi to wkrótce!

var log = document.getElementById("log");
document.getElementById("button").onclick = function() { run(); };

function run() {
	var d1 = new Date();
	for (var i = 0; i < 1000; i++) {
		var x = new Date();
		x.setMilliseconds(0);
		x.setSeconds(0);
		x.setMinutes(0);
	}
	var d2 = new Date();
	log.innerHTML = ((d2.getTime() - d1.getTime()) / 1000) + " seconds";
}
<h3>Xcode Simulator Extremely Low Performance</h3>
<p>This test runs fast (several tens milliseconds e.g. 30 ms)
in any browser any device any platform including very old iOS device
e.g. iPhone 5C and several years old iPad 2, BUT IN SIMULATOR IT TAKES 6000 ms 
(yes, 6 seconds!). Terrible!</p>
<button id="button">run()</button>
<div id="log"></div>

mikep
źródło