iOS 12: приложение зависает при запуске - PullRequest
0 голосов
/ 19 сентября 2018

Я тестирую свое приложение на iOS 12 с XCode 10 (официальный, не бета-релиз).Во время запуска в симуляторе пользовательский интерфейс моего приложения зависает почти на 3 минуты в середине затухания с экрана запуска на обычный экран.Кто-нибудь знает, что может быть причиной, или это ошибка в симуляторе?

Само приложение не зависает, только пользовательский интерфейс.Любые таймеры все равно будут срабатывать.Любой занятый поток продолжится в обычном режиме.Если я поворачиваю телефон, то вращающиеся уведомления все еще приходят и обрабатываются, просто пользовательский интерфейс не меняется и не реагирует ни на какие нажатия в течение 3 минут.После заморозки это продолжается, как будто ничего не случилось.Если я остановлю приложение во время остановки в отладчике XCode, то все потоки будут выглядеть нормально, включая основной поток.Все они находятся в состоянии «ожидания событий».

Замораживание происходит на всех устройствах iOS-12 в симуляторе.Устройства в симуляторе под управлением более старых версий iOS в порядке.Поведение на реальном устройстве под управлением iOS 12 в порядке.Но у меня нет возможности тестировать на всех реальных типах устройств, поэтому он может не работать на некоторых моделях.

Кто-нибудь видит такое же поведение и знает, чем это может быть вызвано?

РЕДАКТИРОВАТЬ: Даже если я закрою приложение из Xcode во время замораживания, замороженный интерфейс не исчезнет, ​​пока после 3минуты

РЕДАКТИРОВАТЬ 2: Даже когда я приостанавливаю выполнение приложения во время периода замораживания, пользовательский интерфейс все еще размораживается и завершает анимацию запуска через 3 минуты.


ОБНОВЛЕНИЕ: проблема, кажется, вызвана определенным CALayer в приложении.В следующем коде:

UIColor *color = [UIColor colorWithRed:0 green:1.0 blue:1.0 alpha:1.0];
courseLineLayer = [CALayer layer];
courseLineLayer.contentsScale = [UIScreen mainScreen].scale;
courseLineLayer.backgroundColor = color.CGColor;
courseLineLayer.bounds = CGRectMake(0, 0, 3, 100);
courseLineLayer.anchorPoint = CGPointMake(0.5, 1.0);
courseLineLayer.masksToBounds = NO;
courseLineLayer.hidden = NO;

Если я изменю hidden = NO на hidden = YES, то проблема исчезнет.Я использую много CALayers в приложении, и понятия не имею, почему этот такой особенный.

Обратите внимание, что весь экран зависает, и даже кнопка «Домой» больше не работает.

Если я настрою приложение таким образом, чтобы этот слой не появлялся при выходе из спящего режима, то экранзаморожен на полпути во вводной анимации:

enter image description here

Я сейчас создал ошибку для Apple, чтобы посмотреть, может быть, они знают об этом.

...