2014-11-03 55 views
8

我在Xcode 6中用F6調試了下面的代碼,執行順序非常有趣。爲什麼Xcode的調試器使用Swift以這種方式跳轉?

下面是代碼 - 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'd,它顯示了以下序列(數字是行號):

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

這是爲什麼?這是Xcode還是語言?這些類在Amazon的AWS開發工具包中定義,不確定是否重要,它們是通過swift-objective-c橋接訪問的,這可能與橋接有關。

順便說一下,執行的最終結果是正確的。

+0

這幾乎是正常的 - 你看到類似於普通的Objective-C,並且我認爲這個效果在Swift中會變得更糟。 – 2014-11-03 03:17:51

+0

在任何環境中都不是那麼不尋常。特別是在循環中,您會看到在開始時跳到底部和/或在結束時跳到頂部。 ARC背後的邏輯增加了更多的陌生感。 – 2014-11-03 03:22:29

+0

@peter您是否找到解決方案?我覺得我在這裏瘋狂嘗試編碼,而我的屏幕變得瘋狂。 – boidkan 2015-01-16 21:16:00

回答

1

最後,我從Apple得到了我的錯誤報告的回覆,聽起來像是一個bug,並在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/

+0

謝謝,遺憾的是我不能在當前項目中使用XCode 6.3,直到測試結束。不過,我會檢查出來。 – boidkan 2015-02-13 17:30:24

+0

問題仍然存在與osx優勝美地,xcode 6.3(穩定)和iOS 8.4。 – iAnurag 2015-08-05 13:31:16

4

我想你正在觀察的是編譯器優化的效果。它在編譯時重寫你的代碼。由於這個原因,在調試版本上禁用優化(-Onone)是正常的,但在發佈版本上啓用它(-Ofast-Os)。

0

你應該打開你的項目和目標配置頁面,構建設置選項卡下,定位「蘋果LLVM 6.1-代碼生成」標籤,更改優化級別調試爲「無[-O0]」,清理你的項目,你就完成了!

相關問題