2014-11-03 10 views
8

Ho eseguito il debug del codice seguente con F6 in Xcode 6 e la sequenza di esecuzione è molto interessante.Perché il debugger di Xcode sta saltando in questo modo con Swift?

Ecco il codice - 7 linee, un punto di interruzione è impostato sulla linea 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] 

Quando F6'd attraverso il codice, ha mostrato la seguente sequenza (i numeri sono numeri di linea):

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

Perché è questo? Questo è qualcosa con Xcode o il linguaggio? Queste classi sono definite nell'SDK AWS di Amazon, non sono sicuro che ciò sia importante, se vi si accede tramite il bridging rapido-obiettivo-c, ciò potrebbe essere correlato al bridging.

A proposito, il risultato netto dell'esecuzione è corretto.

+0

Questo è praticamente normale - si vede simile con il normale Objective-C, e mi aspetterei che l'effetto sia un peggio di capelli con Swift. –

+0

Non è così insolito in nessun ambiente. Soprattutto con i loop vedrai un salto verso il basso all'avvio e/o verso l'alto al termine. E la logica dietro ARC aggiunge più stranezza. –

+0

@peter hai trovato una soluzione. Mi sento come se stavo impazzendo qui cercando di codice mentre il mio schermo impazzisce. – boidkan

risposta

1

Infine ho ricevuto una risposta al mio bug report da Apple e sembra che fosse un bug e risolto in una versione beta di XCode. Se cerchi una soluzione, prova la versione beta:

Riteniamo che questo problema sia stato risolto nell'ultima versione di Xcode 6.3 beta, compreso l'SDK di iOS 8.3 con Swift 1.2.

Per favore prova con questa versione. Se i problemi persistono, includi tutti i registri o le informazioni pertinenti che potrebbero aiutarci a effettuare accertamenti.

Questa è una versione preliminare del set di strumenti di sviluppo Xcode completo per Mac, iPhone, iPad e Apple Watch. Questa versione richiede OS X Yosemite.

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

+0

Grazie, purtroppo non posso usare XCode 6.3 con il mio progetto attuale fino alla sua versione beta. Comunque, lo controllerò. Il problema – boidkan

+0

è ancora presente con osx yosemite, xcode 6.3 (stabile) e iOS 8.4. – iAnurag

4

Penso che quello che stai osservando sia l'effetto delle ottimizzazioni del compilatore. Riscrive il tuo codice al momento della compilazione. Per questo motivo è normale disabilitare l'ottimizzazione (-Onone) sui build di debug, ma abilitarlo (-Ofast o -Os) nelle versioni di rilascio.

0

Si dovrebbe aprire il progetto e si rivolge pagina di configurazione, nella scheda impostazioni di generazione, l'individuazione della modifica "Apple LLVM 6.1 generazione di codice", cambiare il livello di ottimizzazione per debug to be "None [-O0]", pulisci il tuo progetto e il gioco è fatto!

Problemi correlati