我在Xcode 6
中用F6
调试了下面的代码,执行的顺序很有意思。
这是代码 - 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 还是语言的问题?这些类是在 Amazon 的 AWS SDK 中定义的,不确定是否重要,它们是通过 swift-objective-c 桥接访问的,这是否与桥接有关。
顺便说一句,执行的最终结果是正确的。
最佳答案
我认为您观察到的是编译器优化的效果。它在编译时重写你的代码。出于这个原因,通常在调试版本上禁用优化 (-Onone
),但在发布版本上启用它(-Ofast
或 -Os
) .
关于objective-c - 为什么 Xcode 的调试器在使用 Swift 时会这样跳来跳去?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707240/