Noncopyable 은 무엇인가?

김재형·2024년 10월 21일
0

들어가기에 앞서

이번글을 아래의 WWDC 2024 영상을 참고하여 작성하였습니다!
https://developer.apple.com/videos/play/wwdc2024/10170/

Swift 값은 고유하지 않다.

복사가 가능한 Swift는 즉 값이 고유하지 않습니다.
떄론, 고유해야 좋을 때도 있을겁니다.

Copying

위와같은 코드를 작성했다고 생각해보겠습니다.
player1 을 만들고 var 변수를 통해 player1복사한 값을 할당시켰습니다.

player2 의 아이콘을 변경하더라도 player1은 영향이 없습니다.
구조체이다 보니 deinit 을 생각할 필요도 없겠어요!

만약 Class 였다면요?

Swift 를 열심히 공부하신 분들은 정말 쉬운 문제일 것 같아요

참조를 전달하였기 때문에 약함 참조라고 불리우며
하나의 Player 가 아이콘을 바꾸면 두 곳다 바뀌게 됩니다.

그렇다면 Class 인데 영향을 안주고 복사 못하는 걸까요?

깊은 복사

위와 같이 깊은 복사를 이용하여 서로에게 영향을 주지 않고
복사해서 사용한다면 가능합니다.

Copyable

유형이 자동으로 복사될 수 있는 기능을 설명하는 protocol 입니다.
Sendable 과 마찬가지로 멤버 요구 사항이 없습니다.

모든 유형이 Copyable을 채택하고 있습니다.

noncopable

Copyable 억제하는 키워드를 명시합니다.

음..? 백업에다가... 그럼 2개가 되는걸까요?
다시 아래 사진을 보시죠

복사를 지원하지 않으니 concume 키워드를 통해 자체를 가져 오게 합니다.
여전히 2개가 된것 같으실까요?
네 아닙니다. 만약 load(sysyem) 즉 시스템 디스크를 읽게 된다면

아무것도 할당된 것이 없으므로, 오류가 발생하게 됩니다.

마무리 하며

솔직히... 간단한 개념인줄 알았으나
상당히 무게감이 있는 내용이였습니다.
다음 시간에는 consuming 부터 이어서 설명하겠습니다.
모두 고생하셨습니다.

profile
IOS 개발자 새싹이
post-custom-banner

0개의 댓글