SwiftUI Preview 因 *** 崩溃

Posted

技术标签:

【中文标题】SwiftUI Preview 因 *** 崩溃【英文标题】:SwiftUI Preview crashes with *** 【发布时间】:2019-06-18 11:21:44 【问题描述】:

在一个现有的应用程序中,我想尝试 SwiftUI 以获得一些小视图。我在 macOS Catalina 和 Xcode 11 中打开了我的项目并添加了一个 SwiftUI 类。

令我惊讶的是,我收到以下错误:

无法在此文件中预览 -- YourApp.app 可能已崩溃

在预览窗口的顶部。

当我查看崩溃日志时,我发现这是因为 *** 错误:

崩溃的线程:0 调度队列:com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_PROTECTION_FAILURE at 0x00007ffee98cfff8
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [37403]

External Modification Warnings:
Thread creation by external task.

VM Regions Near 0x7ffee98cfff8:
    MALLOC_SMALL           00007fa424000000-00007fa424800000 [ 8192K] rw-/rwx SM=PRV  
--> STACK GUARD            00007ffee60d0000-00007ffee98d0000 [ 56.0M] ---/rwx SM=NUL  stack guard for thread 0
    Stack                  00007ffee98d0000-00007ffeea0d0000 [ 8192K] rw-/rwx SM=ALI  thread 0

Application Specific Information:
CoreSimulator 643.8.4 - Device: iPhone Xʀ (1C2CE9A2-334D-4A62-8AE9-C6CCC6D346E6) - Runtime: ios 13.0 (17A5492t) - DeviceType: iPhone Xʀ

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   MessageView.2.preview-thunk.dylib   0x000000012f726918 -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 34
1   MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
2   MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
3   MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
...
508 MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
509 MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
510 MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37
511 MessageView.2.preview-thunk.dylib   0x000000012f72691b -[UIViewController(PageViewLogging) ms_viewWillAppear:] + 37

【问题讨论】:

【参考方案1】:

这是因为您在 didFinishLaunchingWithOptionsAppDelegate 中使用了外部框架。在处理 SwiftUI 代码时清除该方法,它将按预期工作。

不完全确定这是为什么,但可能是因为 SwiftUI 运行您的应用程序的一个实例来呈现它,并使用 AppDelegate 来执行此操作。

【讨论】:

以上是关于SwiftUI Preview 因 *** 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Xcode项目新增单元测试(Unit Test)后预览(Preview)崩溃的解决

SwiftUI Xcode项目新增单元测试(Unit Test)后预览(Preview)崩溃的解决

SwiftUI Preview 因链接器错误而失败

SwiftUI Preview Canvas 与核心数据一起崩溃

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃