ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴파일 타임 / 런타임
    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

    댓글

Designed by Tistory.