이번글을 아래의 WWDC 2024 영상을 참고하여 작성하였습니다!
https://developer.apple.com/videos/play/wwdc2024/10170/
복사가 가능한 Swift는 즉 값이 고유하지 않습니다.
떄론, 고유해야 좋을 때도 있을겁니다.
위와같은 코드를 작성했다고 생각해보겠습니다.
player1
을 만들고 var 변수를 통해player1
을복사
한 값을 할당시켰습니다.
즉
player2
의 아이콘을 변경하더라도player1
은 영향이 없습니다.
구조체이다 보니 deinit 을 생각할 필요도 없겠어요!
Swift 를 열심히 공부하신 분들은 정말 쉬운 문제일 것 같아요
참조
를 전달하였기 때문에 약함 참조라고 불리우며
하나의 Player 가 아이콘을 바꾸면 두 곳다 바뀌게 됩니다.
그렇다면 Class 인데 영향을 안주고 복사 못하는 걸까요?
위와 같이 깊은 복사를 이용하여 서로에게 영향을 주지 않고
복사해서 사용한다면 가능합니다.
유형이 자동으로 복사될 수 있는 기능을 설명하는 protocol 입니다.
Sendable 과 마찬가지로 멤버 요구 사항이 없습니다.
모든 유형이
Copyable
을 채택하고 있습니다.
Copyable 억제하는 키워드를 명시합니다.
음..? 백업에다가... 그럼 2개가 되는걸까요?
다시 아래 사진을 보시죠
복사를 지원하지 않으니
concume
키워드를 통해 자체를 가져 오게 합니다.
여전히 2개가 된것 같으실까요?
네 아닙니다. 만약 load(sysyem) 즉 시스템 디스크를 읽게 된다면
아무것도 할당된 것이 없으므로, 오류가 발생하게 됩니다.
솔직히... 간단한 개념인줄 알았으나
상당히 무게감이 있는 내용이였습니다.
다음 시간에는 consuming 부터 이어서 설명하겠습니다.
모두 고생하셨습니다.