UniqueBox, Ref, and MutableRef in Swift 6.4
В Swift 6.4 подвезли три типа, которые звучат как кишки компилятора, но на деле закрывают вполне бытовую боль.
🟣UniqueBox - коробка с одним хозяином. Иногда значение нужно положить на кучу (оно большое, или нужен стабильный адрес), но при этом ты точно знаешь, что хозяин должен быть один. Раньше для этого брали класс и получали в нагрузку счетчик ссылок и возможность нечаянно расшарить. UniqueBox дает хранилище на куче без этого балласта.
🟣Ref - самый понятный когда копировать можно (читателей много), писать нельзя, источник
заморожен на время жизни ссылки.
🟣MutableRef - тут наоборот. Запись можно, копировать нельзя.
Раньше если бы мы делали class Box то это было бы тяжело по памяти. Так еще бы была бы нагрузка на ARC. Сейчас ни один из трех не делает retain/release.
В фичекодах это почти незаметно. Полезно когда вы делаете свои коллекции для BDUI или сложного лайаута.
В следующем посте попробую разобрать более практический пример с ссылкой на гит и цифрами
Post #4136
1.56K
