В Objective-C retain и copy — это атрибуты свойств, которые контролируют управление памятью при присвоении значения свойству.
retaincopyNSMutableString — без copy внешний код может неожиданно изменить базовую строкуSwift обрабатывает эти концепции иначе, через различие между значимыми и ссылочными типами:
struct, enum, String, Array) по умолчанию используют семантику copy-on-write — присвоение автоматически создаёт независимую копиюclass) ведут себя как retain — присвоение делит один и тот же экземпляр и увеличивает счётчик ARC (Automatic Reference Counting)// Значимый тип — ведёт себя как `copy`
var a = "Hello"
var b = a
b = "World" // `a` не затронут
// Ссылочный тип — ведёт себя как `retain`
let obj1 = MyClass()
let obj2 = obj1 // оба указывают на один и тот же экземпляр
retain и copy, делая управление памятью безопаснее по дизайнуВ Objective-C атрибут retain увеличивает счетчик ссылок объекта, а атрибут copy создает новый независимый экземпляр, изолируя свойство от внешних изменений изменяемых типов.
Новый — ещё не проверен сообществом
Вы