相关疑难解决方法(0)

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
               }
Run Code Online (Sandbox Code Playgroud)

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

但是,当我把我的应用程序用户通过Testflight或直接运行我在同一个iPhone应用程序,但使用发布版本的配置,然后清理代码不运行警报显示不出来.看起来整个闭包不会被调用.

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

感谢您的任何帮助!

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

closures release-mode ios swift alamofire

11
推荐指数
1
解决办法
3877
查看次数

除非我关闭优化,否则Swift - 释放构建崩溃

这是在XCode 6.2上.

如果我在发布模式下运行应用程序它将崩溃,但如果优化关闭它不会崩溃.代码看起来很简单.我已经对ObjC进行了十多年的编程,所以对于编程等不是新手.

我注意到在32位它在发布模式(Fastest -O)中运行良好,但在64位真正的iOS硬件上它崩溃了.

这是编译器错误吗?或者是否可能只有一些编译器设置崩溃(可能发生在C!).

我包含代码,但我不确定它会有所帮助.

class func attemptLogin(completionHandler: (result: JSON?, error: NSError?) -> ()) {
    // It appears that these variables are not working in the completion block in 64 with optimization on.
    let email = User.email
    let password = User.password

    // setup login.
    let parameters: [String : AnyObject] = [
        "action": "login",
        "login": [
            "email": email,
            "password": password,
            "type": User.type
        ]
    ]

    // Fire off REST POST Async
    request(.POST, baseUrl, parameters: parameters, encoding: .JSON)
        .responseSwiftyJSON { (request, …
Run Code Online (Sandbox Code Playgroud)

crash 64-bit ios swift

2
推荐指数
1
解决办法
2232
查看次数

标签 统计

ios ×2

swift ×2

64-bit ×1

alamofire ×1

closures ×1

crash ×1

release-mode ×1