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ł.


2
Czy wywołujesz metodę delegowania UINavigationController: fun navigationController (navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {}?
Norman G,

2
willShowViewController nigdy się nie nazywa, nie ...
swalkner

Rozumiem to samo. Używam SpriteKit i SceneKit i podejrzewam je!
Howard Lovatt

3
Czy ktoś zgłosił błąd? Mam zamiar.
David DelMonte

1
Proszę spojrzeć na tę odpowiedź. stackoverflow.com/a/39997761/6602495
Sneha

Odpowiedzi:


285

w twoim Xcode:

  • Kliknij nazwę swojego aktywnego schematu tuż obok przycisku Stop
  • Kliknij Edytuj schemat ....
  • w Uruchom (debuguj) wybierz kartę Argumenty
  • w zmiennych środowiskowych kliknij +
  • dodaj zmienną: OS_ACTIVITY_MODE = wyłącz

zrzut ekranu


4
Dziękujemy za dodatkowe informacje
amergin

26
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:

  1. dodawanie przekazanego modułu obsługi poleceń wstępnych do listy programów obsługi;
  2. 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ć.


1
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)

OS_ACTIVITY_MODE = disable

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).

wprowadź opis zdjęcia tutaj

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)

wprowadź opis zdjęcia tutaj


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.


1
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ń).


6
Właśnie skopiowałeś wcześniejszą odpowiedź (z mniej szczegółami)
Ashley Mills,

2
faktycznie TL; DR pomaga.
Juan Je García
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.