我试图寻找这个,但没有运气,所以希望有一些大师可能知道答案。
我看到我的应用的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上,没有任何线索可以帮助重现它。
之前有没有人经历过这样的事情,对可能导致这种情况的人有什么见解/怀疑?
答案 0 :(得分:8)
我有完全相同的崩溃,我已经找到了原因。我的代码的高度简化版本看起来像
[self dismissViewControllerAnimated:YES completion:nil];
// call a method that ends up doing
[appRootViewController dismissViewControllerAnimated:NO completion:nil];
上面代码段中的 self
是一个视图控制器,它以模态方式呈现在根目录上。视图控制器本身也在模式上呈现了当前上下文中的一些其他控制器。所以我正在做的是试图通过动画来解除那个过流的上下文控制器,然后调用其他代码,这些代码最终会从根目录中解除任何呈现的视图控制器而没有动画。
或者换句话说,在前一个动画解雇正在进行的过程中,视图控制器为我刚刚开始的动画解雇提供了当前上下文,从视图层次结构中删除。
在Xcode中复制时,它还会将以下内容记录到控制台:
没有设置transitionViewForCurrentTransition,演示控制器在演示期间被解雇了? (< _UIOverCurrentContextPresentationController:0x7faf277d9c30>)