为什么Xcode的调试器会使用Swift以这种方式跳转?

时间:2014-11-03 03:13:04

标签: objective-c xcode debugging swift

我使用F6中的Xcode 6调试了以下代码,执行顺序非常有趣。

这是代码--7行,在第1行设置断点:

    let request = AWSDynamoDBPutItemInput()
    request.tableName = "blah"

    let card = AWSDynamoDBAttributeValue()
    card.S = "1234"
    let email = AWSDynamoDBAttributeValue()
    email.S = "notset"

    request.item = ["card_number" : card, "email" : email]

当我F6通过代码时,它显示以下序列(数字是行号):

1,2,4,2,3,4,6,4,5,6,7,6,7

这是为什么?这是Xcode还是语言?这些类是在亚马逊的AWS开发工具包中定义的,不确定是否重要,它们是通过swift-objective-c桥接访问的,这可能与桥接有关。

顺便说一下,执行的最终结果是正确的。

3 个答案:

答案 0 :(得分:4)

我认为您正在观察的是编译器优化的效果。它在编译时重写您的代码。因此,在调试版本上禁用优化(-Onone)是正常的,但在发布版本上启用它(-Ofast-Os)。

答案 1 :(得分:1)

最后,我收到了来自Apple的错误报告的回复,听起来像是一个错误,并在XCode的测试版中得到修复。如果您正在寻求修复,请尝试测试:

  

我们认为此问题已在最新的Xcode 6.3测试版中得到解决,包括带有Swift 1.2的iOS 8.3 SDK。

     

请使用此版本进行测试。如果您仍有问题,请提供可帮助我们调查的任何相关日志或信息。

     

这是适用于Mac,iPhone,iPad和Apple Watch的完整Xcode开发人员工具集的预发行版。此版本需要OS X Yosemite。

     

Xcode 6.3 - 构建6D520o   https://developer.apple.com/xcode/downloads/

答案 2 :(得分:0)

您应打开项目和目标配置页面,在构建设置选项卡下,找到“Apple LLVM 6.1代码生成”标记,将调试的优化级别更改为“无[-O0]”,清理项目你完成了!