WedX - журнал о программировании и компьютерных науках

Сбой приложения при runTransitionForCurrentState, но непонятно, почему

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

Я вижу множество отчетов в iTunes Connect о сбое моего приложения с определенной трассировкой стека, но трассировка стека не показывает ничего полезного.

#0. Crashed: main
0  UIKit                          0x1871100c0 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 324
1  UIKit                          0x1871100bc __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 320
2  UIKit                          0x1870630c8 _runAfterCACommitDeferredBlocks + 292
3  UIKit                          0x187070a80 _cleanUpAfterCAFlushAndRunDeferredBlocks + 92
4  UIKit                          0x186da25a4 _afterCACommitHandler + 96
5  CoreFoundation                 0x181c0c728 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
6  CoreFoundation                 0x181c0a4cc __CFRunLoopDoObservers + 372
7  CoreFoundation                 0x181c0a8fc __CFRunLoopRun + 928
8  CoreFoundation                 0x181b34c50 CFRunLoopRunSpecific + 384
9  GraphicsServices               0x18341c088 GSEventRunModal + 180
10 UIKit                          0x186e1a088 UIApplicationMain + 204
11 MyApp                          0x100082e6c main (main.m:19)
12 libdyld.dylib                  0x1816d28b8 start + 4

В отчетах нет шаблона, который происходит на iOS 9.1, 9.2, 9.3-10 и различных iPhone и iPad, и нет подсказок, которые помогли бы воспроизвести это.

Кто-нибудь сталкивался с чем-то подобным раньше и имел некоторое представление/подозрение о том, что может вызвать это?


  • покажите свой соответствующий код, как вы представляете какой-то контроллер просмотра !!! 16.09.2016
  • спасибо Lion, однако я представляю венчурные капиталисты как минимум из 50 разных мест и не могу воспроизвести проблему ни в одном из них. 16.09.2016
  • У меня точно такая же авария, и я тоже не знаю, что происходит. Единственная подсказка, которую я имею, заключается в том, что большую часть времени один из моих контроллеров представления сообщает о паре viewWillDisappear/viewDidDisappear дважды в строке (с задержкой в ​​​​несколько секунд), не сообщая, что она появилась между ними. 16.09.2016
  • После дальнейшего изучения мое дублированное исчезновение/исчезновение, вероятно, является ошибкой UIKit с пользовательскими контроллерами контейнеров, но это предполагает, что я разорвал стек контроллера представления в обработчике действий листа UIAlertController, если это полезно. Обработчики действий не должны работать до тех пор, пока UIAlertController не будет полностью отклонен, но, может быть, там есть какая-то странная гонка? 16.09.2016

Ответы:


1

У меня точно такая же хрень, причину выяснил. Сильно сокращенная версия моего кода выглядит примерно так

[self dismissViewControllerAnimated:YES completion:nil];
// call a method that ends up doing
[appRootViewController dismissViewControllerAnimated:NO completion:nil];

self в приведенном выше фрагменте — это контроллер представления, представленный модально поверх корня. Сам контроллер представления также модально представил поверх текущего контекста какой-то другой контроллер. Итак, что я делаю, так это пытаюсь отклонить этот контроллер текущего контекста с анимацией, а затем вызвать другой код, который в конечном итоге отклоняет любой представленный контроллер представления из корня без анимации.

Или, другими словами, контроллер представления, предоставляющий текущий контекст для анимированного отклонения, которое я только что запустил, удаляется из иерархии представлений, пока выполняется предыдущее анимированное отклонение.

При воспроизведении этого в Xcode он также записывает в консоль следующее:

transitionViewForCurrentTransition не установлен, контроллер презентации был закрыт во время презентации? (‹_UIOverCurrentContextPresentationController: 0x7faf277d9c30>)

16.09.2016
  • Получение очень похожего сбоя и подозрение, что причина такая же 05.10.2017
  • @Kevin Ballard У меня похожая проблема, и я пытаюсь выяснить ее причину. Я добавил функцию, которая обрабатывает два увольнения, мне интересно, безопасно ли это: сбой просто указывает на appdelegate"> stackoverflow.com/questions/48764872/ 13.02.2018
  • @ Лили Баллард, есть ли простой способ найти эту проблему? Я просмотрел свой код, но не смог увидеть это сообщение в журнале: «transitionViewForCurrentTransition не установлен, контроллер презентации был закрыт во время презентации? (‹_UIOverCurrentContextPresentationController: 0x7faf277d9c30›) Это больше проблема времени? В нашем приложении у нас есть много блокирующих счетчиков, когда пользователь хочет что-то сохранить, мы отображаем блокирующий счетчик, предотвращающий любые действия... Нет ли способа узнать, на каком ViewController они были последними? 14.03.2019
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]