Od czasu konwersji starej aplikacji na system iOS 6, zacząłem otrzymywać następujący komunikat w konsoli.Powolny czas ładowania UIViewController (wolne ostrzeżenie ClientState)
WARNING: Slow defaults access for key ClientState took 0.023656 seconds, tolerance is 0.020000
Poza aktualizacją mój kod z iOS 5 do iOS 6, ja też przełączony do automatycznego układu. Uruchomiłem Instruments/Time Profiler i rootViewController
w mojej appDelegate jest problem. Za każdym razem, gdy przełączam kontrolery widoku, zasysam ogromną część czasu (niezależnie od tego, czy mam utworzyć instancję kontrolera widoku, czy też ponownie użyć tego, który już istnieje).
window.rootViewController = myViewController;
wiem jaka metoda nie powierzchownie, ale nie jestem pewien, co się dzieje pod kołdrą ... co spowodowałoby, że jest powolny teraz i co mogę zrobić, aby ją przyspieszyć?
EDIT: Próbowałem biorąc moją storyboard wyłączyć auto-układ i problem znika (oczywiście mój układ UI jest w ruinie). Więc oczywistym wnioskiem jest to, że jest to coś z auto-układu. Mam prawdopodobnie niewiele mniej niż 70 wyświetleń połączonych na ekranie i różne ograniczenia potrzebne do ich ułożenia. Trudno mi uwierzyć, że auto-layout jest znacznie wolniejszy (od -80ms z wyłączonym automatycznym układem do ~ 1370ms z włączonym autoodkładaniem).
Dziwne ostrzeżenie nigdy wcześniej tego nie widziało, ale czy używasz Core Data? – Nathan
Nie. Tylko kilka dość skomplikowanych kontrolerów widoku na jednym storyboardzie i niektóre klasy obiektów danych, które serializuję. Ponieważ wszystkie dane (które nie są dużo) musiały pozostać w pamięci przez cały czas, gdy aplikacja działa, dane Core Data wydawały się przesadą. – DBD
możliwy duplikat [Powolny domyślny dostęp dla klucza Ostrzeżenie ClientState na iOS] (http://stackoverflow.com/questions/12873144/slow-defaults-access-for-key-clientstate-warning-on-ios-) –