-
컴파일 타임 / 런타임Swift 2021. 5. 12. 16:26
ARC 자동 메모리 관리는 컴파일 타임에 작동한다.
당연한 말 같지만 내가 정확하게 컴파일 타임과 런타임을 구분하고 있는게 맞는지 아래와 같이 서술해본다.
먼저 Swift는 정적(static) 타입, 동적(dynamic) 타입이 있다.
결론 :
정적타입 검사는 컴파일 타임때
동적타입 검사는 런타임때 발생한다.
아주 쉬운 예시
// 정적 데이터의 컴파일 검사 예시 let text: String = 1 // 컴파일때 에러남 let text: String = "" // 컴파일때 검사해서 통과~ // 동적 데이터의 런타임 검사 예시 var testData: Any = Test() if let data = testData as? ErrorType { // 알수 없지만 런타임 중 에러가 날 수도 있다.(예시: 소스코드상 알 수 없는 외부라이브러리 등) }
사실 이걸 적게되는 이유는 ARC가 컴파일 타임에 작동하기때문이다! HOW? 아래를 참고했다.
ARC가 컴파일 타임에 실행되는데, 어떻게 동적으로 실행되는 것들의 Reference Count를 세고 메모리 관리를 할 수 있을까요?
ARC는 컴파일 타임에 자동으로 retain, release를 적절한 위치에 삽입하는 방식으로 메모리를 관리합니다. Heap 영역에 Reference형 자료들이 얼마나 참조되고 있는지 카운팅하고, 이 Reference Count를 통해서 참조 카운트가 0이 될 때, deinit을 통해 해제시키게 됩니다.
출처: https://beenii.tistory.com/117 [끄적이는 개발노트]
728x90'Swift' 카테고리의 다른 글
weak self 에 대해서 (언제나 하는걸까?) (0) 2021.06.18 Operation Queue (0) 2021.05.26 Swift GCD (0) 2021.05.11 Swift 의 용어 (알쓸신잡편) (0) 2021.05.10 Swift then 사용 (0) 2021.05.10