我使用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桥接访问的,这可能与桥接有关。
顺便说一下,执行的最终结果是正确的。
答案 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]”,清理项目你完成了!