Che cosa significa?
Il compilatore Swift contrassegna gli argomenti della funzione per una serie di motivi, principalmente relativi alle ottimizzazioni interne. Per la tua domanda, ci concentreremo sul mangler, poiché questo è ciò che contribuisce alla tua stampante pretty stack trace e alla stampante del nodo. Fino al momento di questo post, la mangler funzione specializzazione ha 6 segni si possono applicare a un argomento:
Morto
L'argomento è inutilizzato nel corpo della funzione e può essere rimossa in un passaggio di eliminazione argomento morto.
chiusura
L'argomento è una chiusura e può richiedere un'ulteriore mutilazione/demangling.
costante
L'argomento è una costante.
appartengono garantito
Un trasferimenti argomento di proprietà chiamante di proprietà al chiamato. L'argomento ha quindi un forte riferimento associato ad esso [il chiamante] ed è garantito per vivere attraverso la chiamata, in modo che il compilatore consenta al chiamante di elidere il trasferimento e invece di conservare lo stesso.
SROA
Un passaggio Scalar Replacement of Aggregates dovrebbe ottimizzare questo argomento.
In Out to value
Il parametro è stato contrassegnato inout ma il chiamato in realtà non mutano esso.
Il Nodo stampante AST aggiunge un altro marchio
Per tutti gli effetti abbiamo solo a cuore Dead
, Owned to Guaranteed
e Exploded
.
L'unico che può sembrare ancora mistificante è Exploded
. An Explosion è un costrutto di ottimizzazione utilizzato dal compilatore Swift per determinare una strategia per decomprimere i valori dalle piccole strutture e dalle enumerazioni nei registri. Pertanto, quando la stampante del nodo dice che un valore è Exploded
, significa che ha già decompresso il valore in registri prima della chiamata.
è importante ai fini del debug?
No.
Domanda simile: http://stackoverflow.com/questions/31397116/what-does-arg-exploded-mean-in-swift-crash-log – JAL