小编典典

应用在发布版本中崩溃,但在调试中不崩溃

swift

就像我在标题中说的那样,我正在为iPhone编写一个应用程序,该应用程序可以在调试模式下完美运行,但是当我将其构建为发行版并通过TestFlight安装时,它会崩溃。由于崩溃日志,它可能必须使用以下代码行:

let path = NSBundle.mainBundle().pathForResource("PrinterList", ofType: "plist")
if path != nil {
    let printerDic = NSDictionary(contentsOfFile: path!)
    let printerList = NSArray(array: printerDic.allKeys)
    printerNames = printerList as [String]
}

我使用的是Brother的框架而不使用AirPrint进行打印,但是我认为这不是问题,因为应用程序在对框架执行某些操作之前便崩溃了。它仅在我执行这些行的ViewController中崩溃。我也只需要该ViewController中的框架。


阅读 252

收藏
2020-07-07

共1个答案

小编典典

应用程序可能会在发布模式下崩溃,而在调试模式下却没有崩溃,原因有很多(例如,内存分配差异显示了两个构建版本中都存在的错误。)即使不使用应用程序,也可能需要大量工作来进行跟踪。
Beta编译器/语言。

您说如果按照我的建议进行操作并在优化关闭的情况下进行发布,问题就会消失。鉴于Swift编译器仍处于测试阶段,并且肯定仍然存在偶发性问题(我已经看到编译器在构建优化的版本时会崩溃),这实际上可能是一个优化器错误。

因此,现在,我暂不考虑它。在没有优化的情况下进行发布,直到获得编译器的完整版本。然后,重新打开优化,看看是否仍然存在问题。如果您这样做了, 那么这就是
开始花费精力尝试找出是编译器错误还是您自己的代码错误的时候了。

2020-07-07