Ios popover中的Segue会崩溃

Ios popover中的Segue会崩溃,ios,swift,cocoa-touch,uikit,Ios,Swift,Cocoa Touch,Uikit,我有一个客户在下面的代码中遇到崩溃。我们没有任何机会复制它,并且它在发布的应用程序中已经平稳运行了多年,直到我们在TestFlight中发布了这个测试版: DispatchQueue.main.async(执行:{ 如果let=self.activeAlert{ self.activeAlert?.disclose(动画:true,完成:{ //在这里撞车 self.performsgue(带有标识符:“已完成校准”,发送方:self) }) }否则{ self.performsgue(带有标识

我有一个客户在下面的代码中遇到崩溃。我们没有任何机会复制它,并且它在发布的应用程序中已经平稳运行了多年,直到我们在TestFlight中发布了这个测试版:

DispatchQueue.main.async(执行:{
如果let=self.activeAlert{
self.activeAlert?.disclose(动画:true,完成:{
//在这里撞车
self.performsgue(带有标识符:“已完成校准”,发送方:self)
})
}否则{
self.performsgue(带有标识符:“已完成校准”,发送方:self)
}
})
这是堆栈跟踪


Last Exception Backtrace:
0   CoreFoundation                  0x1bde8d344 __exceptionPreprocess + 228 (NSException.m:199)
1   libobjc.A.dylib                 0x1bdba2cc0 objc_exception_throw + 60 (objc-exception.mm:565)
2   UIKitCore                       0x1c194af8c -[UIViewController performSegueWithIdentifier:sender:] + 284 (UIViewController.m:3979)
3   iOSense                         0x10016be68 partial apply for closure #1 in closure #4 in ODOCalGetDataViewController.catchNotification(notification:) + 48
4   iOSense                         0x1001f24b4 thunk for @escaping @callee_guaranteed () -> () + 28 (<compiler-generated>:0)
5   UIKitCore                       0x1c195bd10 -[UIViewController dismissViewControllerWithTransition:completion:] + 1276 (UIViewController.m:7909)
6   UIKitCore                       0x1c195b720 -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 528 (UIViewController.m:7837)
7   UIKitCore                       0x1c195df68 -[UIViewController dismissViewControllerAnimated:completion:] + 148 (UIViewController.m:8335)
8   iOSense                         0x10016b334 closure #5 in ODOCalGetDataViewController.catchNotification(notification:) + 200 (ODOCalGetDataViewController.swift:108)
9   iOSense                         0x1001f24b4 thunk for @escaping @callee_guaranteed () -> () + 28 (<compiler-generated>:0)
10  libdispatch.dylib               0x1bdb2e134 _dispatch_call_block_and_release + 32 (init.c:1408)
11  libdispatch.dylib               0x1bdb2f5ac _dispatch_client_callout + 20 (object.m:495)
12  libdispatch.dylib               0x1bdb3b7d4 _dispatch_main_queue_callback_4CF + 832 (inline_internal.h:2484)
13  CoreFoundation                  0x1bde088d4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 (CFRunLoop.c:1749)
14  CoreFoundation                  0x1bde0358c __CFRunLoopRun + 1692 (CFRunLoop.c:3069)
15  CoreFoundation                  0x1bde02bc8 CFRunLoopRunSpecific + 480 (CFRunLoop.c:3192)
16  GraphicsServices                0x1c81eb5cc GSEventRunModal + 164 (GSEvent.c:2246)
17  UIKitCore                       0x1c1fb5744 UIApplicationMain + 1936 (UIApplication.m:4823)
18  iOSense                         0x100120114 main + 68 (ISenseApplication.swift:13)
19  libdyld.dylib                   0x1bdc7f384 start + 4



上次异常回溯:
0 CoreFoundation 0x1bde8d344例外预处理+228(NSException.m:199)
1 libobjc.A.dylib 0x1bdb2cc0 objc_exception_throw+60(objc exception.mm:565)
2 UIKitCore 0x1c194af8c-[UIViewController性能与标识符:发送方:][284(UIViewController.m:3979)
3 iOSense 0x10016be68部分申请关闭#1在关闭中#4在ODOCalGetDataViewController中。catchNotification(通知:)+48
4 iOSense 0x1001f24b4 thunk用于@escaping@callee_保证()->()+28(:0)
5 UIKitCore 0x1c195bd10-[UIViewController解除ISSISViewControllerWithTransition:completion:+1276(UIViewController.m:7909)
6 UIKitCore 0x1c195b720-[UIViewController\u性能协调演示文稿属性:动画:][528(UIViewController.m:7837)
7 UIKitCore 0x1c195df68-[UIViewController解除ViewController初始化:完成:][148(UIViewController.m:8335)
ODOCalGetDataViewController.catchNotification(通知:)+200(ODOCalGetDataViewController.swift:108)中的8 iOSense 0x10016b334闭包#5
9 iOSense 0x1001f24b4 thunk用于@escaping@callee_保证()->()+28(:0)
10 libdispatch.dylib 0x1bdb2e134 _dispatch_call_block_和_release+32(init.c:1408)
11 libdispatch.dylib 0x1bdb2f5ac_dispatch_client_callout+20(object.m:495)
12 libdispatch.dylib 0x1bdb3b7d4_调度_主队列_回调_4CF+832(inline_internal.h:2484)
13 CoreFoundation 0x1bde088d4 uu CFRUNLOOP u正在为主调度队列提供服务u+16(CFRUNLOOP.c:1749)
14 CoreFoundation 0x1bde0358c__CFRunLoop+1692(CFRunLoop.c:3069)
15 CoreFoundation 0x1bde02bc8 CFRunLoopRunSpecific+480(CFRunLoop.c:3192)
16图形服务0x1c81eb5cc GSEventRunModal+164(GSEvent.c:2246)
17 UIKitCore 0x1c1fb5744 UIApplicationMain+1936(UIApplication.m:4823)
18 iSense 0x100120114 main+68(iSense应用程序.swift:13)
19 libdyld.dylib 0x1bdc7f384启动+4
堆栈跟踪中的第8帧显示执行是通过触发通知启动的。在执行该步骤之前,是否可以确保负责显示
activeAlert
UIViewController
实例已从
Storyboard
加载? 在调用
performsgue(带标识符:sender:)
之前,可以通过添加健全性检查来确保
storyboard
属性不是
nil

苹果公司的文档说明了这一点

当前视图控制器必须已从情节提要加载。如果其storyboard属性为nil,可能是因为您自己分配并初始化了视图控制器,则此方法会引发异常

8 iOSense 0x10016b334 closure #5 in ODOCalGetDataViewController.catchNotification(notification:) + 200 (ODOCalGetDataViewController.swift:108)
guard let _ = storyboard else { return }