본문 바로가기
Apple🍎/WWDC 2023

[WWDC 2023] (7) 스위프트의 새로운 기능 - 3

by 텅빈비니 2023. 9. 12.
반응형

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️입니다.

 

오늘의 포스팅은 WWDC 2023의 일곱 번째 - 스위프트의 새로운 기능 -3 에 대해 알아보도록 하겠습니다.

1. ~Copyable
2. Actor and Concurrency

 

1. ~Copyable

  • Struct에서 deinit 을 사용하게끔 해주는 기능입니다.
    • Class 처럼 참조타입으로 작동되게끔 만들어줍니다. ( 값이 범위를 벗어날 때, deinit 호출 )

~copyable 사용 전

  • 예를 들어 close를 호출한 뒤 파일에 값을 쓰려고 할 수 있다. 
    • 주의가 필요하다. 
  • 수동으로 닫기 위해서는 타입의 범위가 벗어나기 전에 close 메서드를 호출해야 한다.
    • 그러지않으면 Darwin의 리소스 누수가 생긴다.

class 선언 후 deinit 작성

  • 리소스 누수를 방지하기 위해 class로 선언 후 deinit을 작성한다.
    • 자동으로 범위가 벗어났을 시 자동으로 close 를 호출시키게 한다.
  • 하지만 이러한 방법은 Class 의 특성으로 추가 메모리를 할당해줘야 한다.

~Copyable 사용 후

  • ~Copyable 프로토콜을 채택하여 Class의 참조타입처럼 작동되게 한다.
    • deinit 작성하여 자동으로 close 호출시키게 한다.
  • close는 consuming 키워드를 사용할 수 있다.
    • close 호출 시 소유권을 포기하여 값을 사용하지 않음을 뜻한다.

  • 뿐만 아니라 close 호출 후 write을 하였을 때, 위와 같이 오류 메시지를 보여줘 실수를 방지할 수 있다.

 

2. Actor and Concurrency

  • Swift는 동시성 추상모델이며, 다양한 환경과 라이브러리에 도입할 수 있다.
    1. Task 
      • 어디서나 실행가능한 순차적인 작업 단위
      • 'await'이 있으면 작업을 일시 중지한 다음 작업을 계속할 수 있게 되면 다시 시작할 수 있다.
    2. Actors
      • 동기화 메커니즘으로, 고립된 상태에서 상호 배제된 접근을 제공한다.
      • 외부에서 Actors에 진입하려면 await가 요구되는데, 이것은 작업을 일시중지하기 위해 필요합니다.
  • 여러 곳에서 사용할 수 있는 동시성 처리 API 이다.
  • Swift의 동시성 모델은 Single 스레드의 cooperative 큐를 제공합니다.
Swift Concurrency
1. 추상 모델에 포함된 테스트 및 액터가 광범위한 동시성 프로그래밍을 가능하게 합니다.
2. 추상 모델 자체는 굉장히 유연하며 서로 다른 환경에서도 도입할 수 있다.
3. 어떠한 지점에서 커스터마이징을 진행하여 Swift Concurrency가 도입되지 않은 코드에서도 유연하게 작동됩니다.

 

 

이상으로 [WWDC 2023] (7) 스위프트의 새로운 기능 - 3 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~


참고

반응형