Optional в Swift хранится в памяти одним из двух способов:
Для типов, не соответствующих протоколу _ObjectiveCBridgeable: Small/Large Optional Representation.
Для типов, соответствующих протоколу _ObjectiveCBridgeable (например, классы, некоторые структуры): Nullable Pointer Representation.
nil. В этом случае nil Optional представляется как нулевой указатель, а не-nil Optional - как указатель на объект. Это более эффективно с точки зрения памяти, так как не требует дополнительного флага.В итоге, Optional может занимать либо немного больше места, чем базовый тип (Small/Large Optional), либо столько же, сколько указатель (Nullable Pointer). Конкретное представление определяется компилятором в зависимости от типа и его способности быть представленным как nullable-указатель.
swift