【问题标题】:How and why does signal SIGABRT occur when running this code?运行此代码时如何以及为什么会出现信号 SIGABRT?
【发布时间】:2019-09-08 15:46:14
【问题描述】:

当我运行我的应用程序时,会在视图控制器中调用一个函数,当这种情况发生时,我会收到信号 SIGABRT

如何解决?

功能:

func setRootViewController()
{
    if Auth.auth().currentUser != nil
    {
        let tabVC = storyboard?.instantiateViewController(withIdentifier: "TabVC") as! TestViewController
        view.window?.rootViewController = tabVC
        view.window?.makeKeyAndVisible()
    }
    else
    {
        let welcomeVC = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.welcomeVC) as! ViewController
        view.window?.rootViewController = welcomeVC
        view.window?.makeKeyAndVisible()
    }
}

当它崩溃时,我会在控制台区域看到这个:

21 核心基础 0x00007fff23ac4241 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 22 核心基础 0x00007fff23ac416c __CFRunLoopDoSource0 + 76 23 CoreFoundation 0x00007fff23ac3944 __CFRunLoopDoSources0 + 180 24 CoreFoundation
0x00007fff23abe64f __CFRunLoopRun + 1263 25 核心基础
0x00007fff23abde36 CFRunLoopRunSpecific + 438 26 图形服务
0x00007fff37f64bb0 GSEventRunModal + 65 27 UIKitCore
0x00007fff46d562a3 UIApplicationMain + 1621 28 做它!
0x000000010f1b654b 主 + 75 29 libdyld.dylib
0x00007fff51175cf5 start + 1 ) libc++abi.dylib: 终止于 NSException (lldb) 类型的未捕获异常

【问题讨论】:

  • 你能显示完整的错误吗?从这个猜测我会说as!的一个强制演员是负责任的。
  • 究竟是哪一行导致了崩溃?而且您在该错误消息上方没有更多日志?

标签: ios swift sigabrt


【解决方案1】:

尽量避免强制解包。试试这个:

func setRootViewController() {
    if Auth.auth().currentUser != nil {
        if let tabVC = storyboard?.instantiateViewController(withIdentifier: "TabVC") as? TestViewController {
            view.window?.rootViewController = tabVC
            view.window?.makeKeyAndVisible()
        } else {
            print("TabVC doesn't exist or is not a TestViewController")
        }
    } else {
        let welcomeVC = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.welcomeVC)
        // you don't need to cast welcomeVC to a ViewController. 
        view.window?.rootViewController = welcomeVC
        view.window?.makeKeyAndVisible()
    }
}

如果这有帮助或者您有任何后续问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2023-03-10
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多