ios – Swift在调试和发布模式下表现不同

不确定这是 Swift,XCode还是Alamofire的问题,但我在混合Swift / Objc应用程序中的不同位置识别出奇怪的行为.它只发生在用Swift编写的部分中并使用闭包/网络.以下是它发生的示例代码:
Alamofire.request(.DELETE,"http://someUrl.com/user",parameters: nil)
     .response { (request,response,data,error) in
                 // some cleanup code and an alert
               }

当我在我的iPhone上以调试模式运行我的应用程序时,一切正常,清理代码和警报就像我们执行运行上面代码的“删除帐户”操作时那样.

但是,当我通过Testflight将应用程序发送给用户或直接在同一个iPhone上运行我的应用程序但使用Release构建配置时,清理代码不会运行,警报也不会显示.看起来整个闭包不会被调用.

有没有人有这种奇怪行为的经验,知道如何预防它们?我不确定这里的问题是什么,因此我很难找到适用于Debug和Release模式的解决方案.

感谢您的任何帮助!

环境:
我正在使用Alamofire 1.1.3作为嵌入式框架集成到我的项目中作为git子模块.该应用仅在iOS 8上运行,我在iPhone 6上安装了iOS 8.1.2.

解决方法

我在类似于你的项目(Swift Objective-C)中构建发布时遇到了类似的问题,在我的例子中它是在循环中跳过一段代码,但它并没有跳过循环本身.
为了解决这个问题,我们在Build Settings – >中进行了更改. Apple LLVM 6.0代码生成 – >优化将Debug的值调整为最快,最小的[-Os],这与Release相同,然后我们在Debug上遇到了相同的错误.然后我们尝试将两者都更改为None [-O0](这是Debug的默认值),但它只是让错误在Debug模式下消失,而不是在Release中,所以我们必须解决该代码并改变一点UI.

我想相信这是编译器在Release中做的事情,我们无法改变,所以也许它是一个Xcode Bug.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...