Ответ
Функции в Swift являются reference type (ссылочным типом).
Почему? При присваивании функции новой переменной или передаче в качестве параметра копируется не тело функции, а ссылка на неё. Это обеспечивает эффективность и позволяет нескольким сущностям использовать один и тот же функциональный объект.
Пример:
func greet() { print("Hello") }
let firstRef = greet
let secondRef = firstRef // Копируется ссылка, а не функция
firstRef() // Вывод: "Hello"
secondRef() // Вывод: "Hello"
// Обе переменные ссылаются на одну и ту же функцию `greet`.
Практическое следствие: Если бы функции были value type, каждое присваивание создавало бы новую копию, что могло бы негативно сказаться на производительности.