Примечание к параметру __shared
означает, что параметр типа может быть передан по ссылке.
Для типов значений это позволяет нам исключить копию перед выполнением вызова и вместо этого передать ссылку, указывающую прямо на выделенную нами память. SIL называет это соглашение in_guaranteed
для (косвенная ссылка с гарантированным временем жизни). В настоящее время мы передаем себя в неизменяемых функциях.
Он был представлен Манифестом собственности .
Вот разница между аннотациями собственности:
inout
: значение, аналогичное изменяющемуся указателю
__shared
: неизменяемое значение, похожее на указатель
__owned
: явный способ записи значения по умолчанию
Вот краткое изложение манифеста: Swift Ownership Manifesto TL; DR .