Programing Langauge/swift
@retroactive
Hamp
2025. 8. 23. 16:19
반응형

👋 들어가기 전
@retroactive란 키워드를 일하다가 마주쳤는데 무슨 역할인지 몰라서, 한번 살펴보자.
🏁 학습할 내용
- retroactive 어원
- 등장 계기
- 역할
🔎 @retroactive
📖 어원
처음 들어보는 단어인데, 찾아보니 소급적인 뜻이다.
소급적인이라는 한국 단어도, 일상샐황에서 크게 보이지는 않는데, 계약서나 법률에서 찾아볼 수 있다.

AI 정리에서 핵심내용은, 새로 시행되는 어떤 규칙이, 과거 어느시점에도 효력을 준다는 의미
🎉 등장 계기
swift에서는 타입 정의와 프로토콜 정의가 서로 다른 모듈에 있어도, 제 3자에의해 해당 타입을
특정 프로토콜 준수 가능하도록 확장할 수 있다.
이때, 주의할점은 swift 런타임에서 하나의 타입이 동일한 프로토콜을 서로
다른 모듈에서 확장해서 사용하런타임에러가 발생한다.
특히, 오픈 소스라이브러리를 사용할 때 자주겪을 수 있다.
📌 역할
역할도, 어원과 크게 다르지 않는 것 같다.
한번 예시코드와 함께 상황을 만들어보자.

Date 타입을 Identifiable 확장하려고 시도했다.
그러더니, 만약 Foudation 라이브러리(Date의 소유자)가 Date 타입에대해, Identifiable을 공식적으로
내부에서 채택하면, 문제가 발생한다는 안내와 함께 @retroactive를 붙히라고 하고 있다.
여기서 역할을 알 수 있다.
나중에 공식으로 적용해도, 내가 채택한 내용을 사용(소급적용) 하겠다.
경고 메시지가 사라지는 걸 확인할 수 있다.

반응형