티스토리 뷰

iOS

[iOS] NSCoder 정리

Hani_Levenshtein 2021. 12. 7. 23:51

안녕하세요 Hani입니다.

뭐 하나 깊게 공부하려 하니 결국 최상위 클래스인 NSCoder를 알아야겠더라구요 🥺

 

 

required init?(coder aDecoder: NSCoder)

required init?(coder: NSCoder)

커스텀 뷰 만들거나 인코딩 디코딩 할 때 이런 거 정말 많이 봤죠?

요기 있는 NSCoder를 말한 거예욥.

 

NSCoder는 다른 객체의 아카이빙과 배포를 가능하게 만들어 주는 객체를 위한 추상 클래스입니다.

 

음?

 


그럼 다른 객체의 아키이빙과 배포를 가능하게 만들어 주는 구체적인 타입은 뭔데 😡

 

Foundation 프레임워크에서는

NSCoder를 서브클래싱한 NSKeyedArchiver, NSKeyedUnarchiver같은 타입을 제공해주고 있어요.

 

그리고 NSCoder의 서브클래스는 coder class라고 불리는데

이 서브클래스의 인스턴스는 coder object, 줄여서 coder라고 부릅니다.

 

(여기서 디코딩만 되는 coder는 decoder, 인코딩만 되는 coder는 encoder)

 

 

암튼.. NSKeyedArchiver, NSKeyedUnarchiver의 슈퍼클래스가 NSCoder인 줄 몰랐어요. 🥺

이놈들이 coder구나.

 

 

 

 

그러니까 인코딩을 예로 들면

NSCoder는 다른 객체의 아카이빙과 배포를 가능하게 만들어 주는 객체를 위한 추상 클래스입니다. <- 에서

 

다른 객체는 내가 인코딩 하고 싶은 객체고

객체는 NSKeyedArchiver의 인스턴스

추상 클래스는 NSCoder.

 

라고 할 수 있겠네욥 ☺️

 

 

 

위에서 언급한 메서드는 NSCoding 프로토콜을 준수하기 위해 구현해야 하는 메서드예요.

다음 포스팅에서 소개해드리겠습니당

 


References

https://developer.apple.com/documentation/foundation/nscoder

https://developer.apple.com/documentation/foundation/nskeyedarchiver

https://developer.apple.com/documentation/foundation/nskeyedunarchiver

'iOS' 카테고리의 다른 글

[iOS] Object Graph와 Archive 정리  (0) 2021.12.08
[iOS] NSCoding 정리  (0) 2021.12.07
[iOS] About the App Launch Sequence 정리  (0) 2021.11.19
[iOS] About the UI Restoration Process 정리  (0) 2021.11.13
[iOS] HTTP 통신 허용하기  (0) 2021.09.30
댓글