📱 iOS/Swift Concurrency
[Swift Concurrency 9편] Sendable 프로토콜
kyxxn
2025. 2. 26. 10:54
Sendable 프로토콜
비동기 컨텍스트에서 동작할 수 있도록 보장해주는 프로토콜
값 타입의 경우 자동으로 채택
레퍼런스인 클래스의 경우 채택해야 비동기 컨텍스트에서 데이터 경쟁 없이 동작하는 걸 컴파일러로부터 보장 받을 수 있음
클래스가 Sendable을 채택하려면?
아래 3가지를 따라야 함
- final 로 선언되어야 함
- 프로퍼티가 모두 Sendable을 채택해야 함
- 프로퍼티가 모두 let이어야 함 (불변이어야 한다는 뜻)
actor는 Sendable을 채택하고 있음
protocol Actor : AnyObject, [Sendable](<https://developer.apple.com/documentation/swift/sendable>)
Sendable을 채택할 수 있는 것들
- 값 타입
- mutable storage 가 없는 참조 타입
- 내부적으로 상태에 대한 액세스를 관리하는 참조 타입
- @Sendable로 표시된 함수 및 클로저