2016-01-29 22 views
9

Awansery: czy możesz dać mi znać, jeśli widziałeś również ten problem?Sporadyczny czarny ekran podczas wykonywania ruchu w iOS 9.2.1/XCode 7.2

Problem, który widzę, występuje mniej więcej raz na 15 razy, gdy próbuję modalnie uruchomić kontroler widoku z przycisku na określonej scenie.

Robi się to z iOS 9.2.1 i XCode 7.2, chociaż nie jest jasne, w których wersjach się to odbywa. Zmiana wersji systemu iOS nie jest łatwa.

Objawy są następujące: widok

  1. Docelowy kontroler nie jest widoczny na telefonie. Zamiast tego górny pasek (ten z nośnikiem) jest czarny, a czasami migocze, więc cały ekran jest całkowicie czarny. Kontroler widoku uruchamiania jest widoczny, ale nie reaguje.
  2. Kiedy to się dzieje, przechodzę do ekranu XCode i przeglądam debugowanie. Co godne uwagi, pokazuje ekran docelowy, prawie tak, jak powinien wyglądać. Jedyna różnica polega na tym, że jeden z widoków nie wykonał jego drawRect, a jeden z pozostałych widoków wygląda jak w plamie. Ale oczywiście w ogóle nie odpowiada to, co pokazuje telefon.
  3. Przycisk Anuluj na ekranie docelowym nadal działa, ponieważ po naciśnięciu tam, gdzie powinien być, aplikacja nadal działa. Jeśli spróbuję ponownie uruchomić ekran za pomocą przycisku, znowu nie działa. Kiedy to nastąpi, ekran przestał działać dla tej sesji, a aplikacja musi zostać zabita i uruchomiona ponownie.

Nie ma zbyt wielu wskazówek, ale ta informacja może pomóc:

  • Jest 3 scrollviews zawierające poglądy na ekranie docelowym. Wszystkie trzy widoki podrzędne mają swój własny drawRect. Okazuje się, że jeden z elementów drawRect nie jest wywoływany, gdy wystąpi błąd, co powoduje wyświetlenie szarego tła. Widok nakrapiany działa, ale nie mam pojęcia, dlaczego tak wygląda podczas debugowania.
  • Brak ostrzeżeń w XCode. Nic nie pokrywa się z ograniczeniami i prezentacjami NSLayout.
  • Dwa pola są ustawiane w kontrolce widoku docelowego w funkcji prepareForSegue.
  • Przejście jest uruchamiane z przycisku czasu za pomocą scenorysu. Nie ma brakującego lub dodatkowego gniazdka, i jest poprawnie nazwany dla funkcji przygotowania, aby go złapać.

Problem jest sporadyczny, ale wystąpi niezawodnie, jeśli wiele razy zostanie uruchomiony/anulowany.

Oto zrzut ekranu. Nie pokażę ci czarnego ekranu. Jest tylko czarna z przewoźnikiem i czasem.

The launching screen

What XCode view debugger shows during black screen

+0

Czy to drugie ujęcie z widoku kolekcji? – AMayes

+0

Drugi ekran ma kolekcjęView na dole z 3 datami, ale większość z nich to 3 scrollViews zawierające niestandardowe rysunki. Szary obszar, daty po lewej i czasy na górze. – Carlos

+0

Proszę sprawdzić kolejność Z elementów sterujących. Zauważyłem, że jest błąd w XCODE, który zapewnia kontrolę nad szczytem. Zwykle zmieniam kolejność dla jednej etykiety i przywracam do oryginału. Czasami to wydaje się naprawić. Może naprawić twój problem, ale bez patrzenia na kod trudno mi odpowiedzieć. –

Odpowiedz

0

mam rozwiązać go. Sprawdzanie użycia pamięci okazało się całkiem przydatne.

Szary obszar miał zostać wypełniony dużym tłem z narysowanymi liniami. Okazuje się, że naiwna implementacja drawBackground powoduje wzrost wielkości pamięci do ponad 200 MB. Wymieniłem go na CSTiledLayer, a teraz zajmuje to kilka MB.

Powiązane problemy