iOS 10: „[Aplikacja], jeśli jesteśmy w prawdziwym module obsługi przed zatwierdzeniem, nie możemy dodać żadnych nowych ogrodzeń z powodu ograniczeń urzędu certyfikacji”
389
Czasami pojawia się ten komunikat w dziennikach Xcode 8b3 podczas uruchamiania mojej aplikacji, wszystko wydaje się działać, ale chciałbym wiedzieć, skąd to pochodzi. Google wcale nie pomógł.
Pamiętaj, że losowo nie otrzymywałem danych wyjściowych NSLog do konsoli i usunąłem to ponownie, aby to naprawić. To bardziej „wysokiej klasy” programowanie, któremu poddajemy się w firmie Apple.
amergin
37
Za to, co jest tego warte, dostaję ten komunikat za każdym razem, gdy wprowadzana jest zmiana orientacji i mam wyłączoną zmienną środowiskową OS_ACTIVITY_MODE.
user2698617
5
Uwaga: po dodaniu tego nie zobaczysz również NSLogs w konsoli.
niravdesai21
4
Czy to nie jest jak wyłączenie alarmu pożarowego?
ScottyBlades
191
Pochodzi z +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]interfejsu API os_log. Nie zależy od innych komponentów / frameworków, których używasz (tylko od UIKit) - odtwarza w projekcie aplikacji z pojedynczym widokiem po zmianie orientacji interfejsu.
Ta metoda składa się z 2 części:
dodawanie przekazanego modułu obsługi poleceń wstępnych do listy programów obsługi;
wykonać jakąś pracę, która zależy od aktualnego stanu maszyny skończonej.
Gdy druga część zawiedzie (wygląda jak zabronione przejście), drukuje powyższy komunikat do dziennika błędów. Myślę jednak, że ten problem nie jest śmiertelny: w tej metodzie są 2 dodatkowe przypadki potwierdzenia, które doprowadzą do awarii podczas debugowania.
Wydaje się, że radar jest najlepszym, co możemy zrobić.
Czy możesz rozwinąć narzędzia, których użyłeś do debugowania, aby uzyskać nazwę tej prywatnej metody i jej strukturę?
Oleksandr Karaberov
9
@AlexanderKaraberov można użyć narzędzia Dispersemper Hoppera, aby znaleźć tekst ostrzegawczy w pliku binarnym frameworka i odniesienia do tego tekstu z metody prywatnej.
k06a
Dostaję to również, gdy klawiatura przewija się i mam kontrolera zasubskrybowanego, aby odpowiadał, zmieniając rozmiar jego widoków.
yo.ian.g
82
Spróbuj umieścić następujące elementy w environment variablesschemacie dla podrun(debug)
Dostałem to w symulatorze podczas obracania iPhone'a 7 za pomocą menu sprzętowego>> obróć. Ta zmienna środowiskowa sprawiła, że fałszywy komunikat zniknął.
George D Girton,
1
Odpowiedź z @Foo poniżej jest przydatna, ponieważ zawiera szczegółowe instrukcje.
Kevin Owens,
1
Nie drukuje również dziennika ostrzeżeń o ograniczeniach
chirag shah,
36
OP zapytał, skąd pochodzi wiadomość. Samo powiedzenie, jak uciszyć, nie jest właściwą odpowiedzią.
iCaramba,
6
Odpowiedź „IOS_ACTIVITY_MODE = wyłącz” wyłącza WSZYSTKIE rejestrowanie! Wystarczy zamknąć widok rejestrowania, jeśli nie chcesz widzieć dziennika. Naprawdę śmieszna odpowiedź, niesamowite, że ma tyle głosów! Nie robi nic, aby rozwiązać rzeczywistą wiadomość. Nasze aplikacje, które intensywnie wykorzystują podstawowe dane, działają dobrze, te wiadomości i inne zaczęły pojawiać się po jednej z ostatnich aktualizacji Xcode. Smutne, że Apple nie może rozwiązać tego typu problemów.
John
13
Możemy go wyciszyć w ten sposób (urządzenie i symulator potrzebują różnych wartości):
Dodaj Nazwę OS_ACTIVITY_MODEi Wartość ${DEBUG_ACTIVITY_MODE}i sprawdź ją (w Produkcie -> Schemat -> Edytuj Schemat -> Uruchom -> Argumenty -> Środowisko).
Dodaj ustawienie User-Defined DEBUG_ACTIVITY_MODE, a następnie dodać Any iOS Simulator SDKdo Debugi ustaw jego wartość disable(w projekcie -> Ustawienia Build -> + -> Ustawienia definiowane przez użytkownika)
Nie działało to dla mnie: widzę to również w konsoli, mimo że wyłączyłem tryb aktywności debugowania, jak sugerowano powyżej.
Johan
-1
Aby to naprawić, usunąłem aplikację z symulatora.
Najpierw też uruchomiłem Clean .
Nie wydaje mi się, żeby coś takiego spowodowało. Największą rzeczą, która zmieniła się przed rozpoczęciem tego objawu, jest to, że środowisko Swift zaczęło wywoływać NSLogwątki robocze zamiast głównego.
Wykonanie czyszczenia działało na początku dobrze, gdy uruchomiłem go w symulatorze bez obracania go, ale potem, gdy ponownie przetestowałem za pomocą polecenia obrotu, zgłosił ten sam błąd.
cheznead
Używam gestów panoramy i ten błąd pojawia się tylko przy zmianie orientacji.
Jeremy Andrews,
-8
OS_ACTIVITY_MODE = disable
Spowoduje to również wyłączenie możliwości debugowania na rzeczywistych urządzeniach (odtąd nie będzie danych wyjściowych konsoli rzeczywistych urządzeń).
willShowViewController
nigdy się nie nazywa, nie ...Odpowiedzi:
w twoim Xcode:
źródło
Pochodzi z
+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]
interfejsu API os_log. Nie zależy od innych komponentów / frameworków, których używasz (tylko od UIKit) - odtwarza w projekcie aplikacji z pojedynczym widokiem po zmianie orientacji interfejsu.Ta metoda składa się z 2 części:
Gdy druga część zawiedzie (wygląda jak zabronione przejście), drukuje powyższy komunikat do dziennika błędów. Myślę jednak, że ten problem nie jest śmiertelny: w tej metodzie są 2 dodatkowe przypadki potwierdzenia, które doprowadzą do awarii podczas debugowania.
Wydaje się, że radar jest najlepszym, co możemy zrobić.
źródło
Spróbuj umieścić następujące elementy w
environment variables
schemacie dla podrun(debug)
źródło
Możemy go wyciszyć w ten sposób (urządzenie i symulator potrzebują różnych wartości):
Dodaj Nazwę
OS_ACTIVITY_MODE
i Wartość${DEBUG_ACTIVITY_MODE}
i sprawdź ją (w Produkcie -> Schemat -> Edytuj Schemat -> Uruchom -> Argumenty -> Środowisko).Dodaj ustawienie User-Defined
DEBUG_ACTIVITY_MODE
, a następnie dodaćAny iOS Simulator SDK
doDebug
i ustaw jego wartośćdisable
(w projekcie -> Ustawienia Build -> + -> Ustawienia definiowane przez użytkownika)źródło
Aby to naprawić, usunąłem aplikację z symulatora.
Najpierw też uruchomiłem Clean .
Nie wydaje mi się, żeby coś takiego spowodowało. Największą rzeczą, która zmieniła się przed rozpoczęciem tego objawu, jest to, że środowisko Swift zaczęło wywoływać
NSLog
wątki robocze zamiast głównego.źródło
Spowoduje to również wyłączenie możliwości debugowania na rzeczywistych urządzeniach (odtąd nie będzie danych wyjściowych konsoli rzeczywistych urządzeń).
źródło