【问题标题】:Swift app function not called in release mode发布模式下未调用 Swift 应用程序功能
【发布时间】:2015-04-11 06:36:42
【问题描述】:

我有一个 iOS Swift 应用程序。我最近添加了一个功能并将新版本上传到 TestFlight。由于某种原因,这个新功能的主要功能在发布模式下没有被调用,但在调试模式下完美运行。

到目前为止我尝试了什么:在“Apple LLVM 6.0 - 代码生成”中发布
1) 将优化级别更改为无,并且
2) 将“默认隐藏的符号”更改为否

我不认为函数的细节在这里很重要,但它的价值在于:它从后端接收和操作一些 JSON 数据。我还有十个其他函数,它们对不同类型的数据做同样的事情——在那里没有遇到同样的问题。

对此有什么想法吗? 发布模式和调试模式之间还有哪些其他区别?这可能是排除故障的良好开端。

谢谢,

【问题讨论】:

  • 我实际上只是遇到了一些非常相似的事情。我仍在尝试调试在发布模式下很困难的问题。我添加了一些println 并相信它开始工作。我认为编译器试图通过重新排序指令进行优化,并且可能会出错。可能值得放一些 println 声明,看看这是否也对你有帮助(至少暂时)

标签: ios swift llvm release-mode debug-mode


【解决方案1】:

发布模式和调试模式之间还有哪些区别?

除了不同的设备架构之外,还有一个 DEBUG 预处理器宏被排除在 Release 中。
您可以制定一个允许您在发布模式下调试的方案,并检查它在哪里中断。

【讨论】:

    【解决方案2】:

    断言不会在发布模式下运行。有时人们会犯这个错误(这些年来我犯过几次):

    assert(doSomethingImportant(), "Failed")
    

    这在 Debug 中有效,但在 Release 中不会调用 doSomethingImportant

    【讨论】:

    • 感谢 Rob,但这当然不是断言。这是一个普通的旧方法调用。
    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多