extension에서 stored 프로퍼티 선언이 불가한 이유

J.Noma·2022년 1월 15일
0

Swift : 가벼운 주제

목록 보기
3/9

Reference


(공식적인 문서가 아닌, 레딧 포스팅과 제 생각을 정리한 포스팅이므로 정답이 아닐 수 있습니다)

stored 프로퍼티 추가는 인스턴스 메모리 요구를 변경한다
메서드나 computed 프로퍼티를 추가하는 것은 인스턴스 메모리량을 추가로 요구하지 않습니다 (메서드는 특정 영역 메모리에 저장되어 모든 인스턴스가 공유하므로). 반면, stored 프로퍼티를 추가하면 인스턴스 당 필요한 메모리가 늘어나게 됩니다

컴파일 복잡도 증가
만약 어떤 모듈에서 선언된 타입을 모듈 외부에서 stored 프로퍼티를 extension하는 경우, 해당 타입 인스턴스에 대한 메모리 요구가 달라집니다. 따라서, App을 컴파일할 때 모든 모듈을 스캔하여 stored 프로퍼티 extension들을 종합함으로써 최종적으로 해당 인스턴스를 위해 필요한 메모리를 특정하는 과정이 선행되어야 할 것입니다. 이로 인해, 이런 계산이 선행되지 않았을 모듈 단위 pre-compiling은 무의미해지고 stord 프로퍼티를 extension할 때마다 모든 모듈을 re-compile해야 할지도 모릅니다

initializer 구현 복잡도 증가
또한, 해당 stored 프로퍼티에 대한 초기화 구문이 없는 기존의 initializer는 사용이 불가해지고 새로운 initializer를 반드시 extension해야 하는데.. 이는 끔찍한 복잡도를 낳게 될 것 같습니다 (class의 initializer가 상속으로 인해 복잡해졌듯이)

profile
노션으로 이사갑니다 https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe

0개의 댓글