Hamp 2025. 8. 23. 16:19
반응형

👋 들어가기 전

@retroactive란 키워드를 일하다가 마주쳤는데 무슨 역할인지 몰라서, 한번 살펴보자.


🏁 학습할 내용

  • retroactive 어원
  • 등장 계기
  • 역할

🔎 @retroactive

 

📖 어원

처음 들어보는 단어인데, 찾아보니 소급적인 뜻이다.

 

소급적인이라는 한국 단어도, 일상샐황에서 크게 보이지는 않는데, 계약서나 법률에서 찾아볼 수 있다.

 

AI 정리에서 핵심내용은, 새로 시행되는 어떤 규칙이, 과거 어느시점에도 효력을 준다는 의미

 

 

🎉 등장 계기

swift에서는 타입 정의와 프로토콜 정의가 서로 다른 모듈에 있어도, 제 3자에의해 해당 타입을
특정 프로토콜 준수 가능하도록 확장할 수 있다.

 

이때, 주의할점은 swift 런타임에서 하나의 타입이 동일한 프로토콜을 서로
다른 모듈에서 확장해서 사용하
런타임에러가 발생한다.

 

특히, 오픈 소스라이브러리를 사용할 때 자주겪을 수 있다.

 

📌 역할

역할도, 어원과 크게 다르지 않는 것 같다.

 

한번 예시코드와 함께 상황을 만들어보자.

 

 

Date 타입을 Identifiable 확장하려고 시도했다.

 

그러더니, 만약 Foudation 라이브러리(Date의 소유자)가 Date 타입에대해, Identifiable을 공식적으로
내부에서 채택하면, 문제가 발생한다는 안내와 함께 @retroactive를 붙히라고 하고 있다.

 

여기서 역할을 알 수 있다.

 

 

나중에 공식으로 적용해도, 내가 채택한 내용을 사용(소급적용) 하겠다.

 

 

경고 메시지가 사라지는 걸 확인할 수 있다.

반응형