Что это значит?
Компилятор Swift отмечает аргументы функции по ряду причин, в основном связанных с внутренней оптимизацией. По вашему вопросу мы сосредоточимся на mangler, так как это способствует вашему pretty stack trace и принтеру узла. По состоянию на время этого поста, функция специализация Mangler имеет 6 знаков он может обратиться к аргументу:
Мертвый
Аргумент не используется в теле функции и может быть удален в удаление мертвого аргумента.
Закрытие
Аргумент является закрытие и может потребовать дальнейшего коверкание/декодировании.
Константа
Аргумент является константой.
Принадлежит к Гарантированный
вызывающего абонента, принадлежащего аргумент передает права собственности на вызываемым. Таким образом, аргумент имеет сильную ссылку, связанную с ним [вызывающего абонента], и, как гарантируется, он может прожить через вызов, поэтому компилятор позволяет вызывающему абоненту преодолеть передачу, а совокупность сохраняется.
SROA
Scalar Replacement of Aggregates проход должен оптимизировать этот аргумент.
Ушло Для Цените
Параметр был отмечен INOUT, но вызываемая фактически не мутировать его.
Узел Принтер AST добавляет еще одну марку
Для всех намерений и целей, мы только заботимся о Dead
, Owned to Guaranteed
и Exploded
.
Единственный, который все еще может показаться мистическим, - Exploded
. Explosion - это оптимизационная конструкция, используемая компилятором Swift для определения стратегии для распаковки значений из небольших структур и перечислений в регистры. Таким образом, когда принтер узла говорит, что значение равно Exploded
, что означает, что он уже распаковал значение в регистры перед вызовом.
имеет значение для целей отладки?
Nope.
Аналогичный вопрос: http://stackoverflow.com/questions/31397116/what-does-arg-exploded-mean-in-swift-crash-log – JAL