Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- five lines of cdde
- mrc
- IOS
- AutoLayout
- RC
- 앱의생명주기
- 프로그래머스
- Safari Inspector
- firestore
- RxSwift
- hackerrank
- 클린코드
- TDD
- UIKit
- 리팩터링
- storekit2
- Swift코딩테스트
- ARC
- algorithm
- Di
- unittest
- SWIFT
- Swift디자인패턴
- ios면접
- alamofire
- css학습
- five lines of code
- 카카오맵클론
- firebase
- 코딩테스트입문
Archives
- Today
- Total
샘성의 iOS 개발 일지
Retain Count 방식에 대해 설명하시오. 본문
728x90
1. Retain Count란?
힙(Heap) 영역의 RC(Reference Count)를 세어본 후, RC가 0인 순간, 컴파일 할 때 메모리 해제시점을 결정하는 방식
- 데이터 영역 : 공통으로 공유하는 영역으로, 앱이 실행되는 동안은 불변한다. (전역변수, 타입 변수(static))
- 관리 필요 X - 스택 영역: 함수 실행을 위한 임시적 공간이다. 따라서 실행이 완료되면 FIFO(선입선출) 방식으로 알아서 메모리에서 사라지게 됨
- 관리 필요 X - 힙 영역: 비교적 긴 시간동안 갖고있게 되는 데이터가 저장된다. 개발자가 관리해야지만 메모리에서 할당 해제가 됨
이 때, 개발자가 관리해야 할 것이 바로 Retain Count (RC)이다.
2. Retain Count의 동작 방식
2-1) Heap 영역에 저장되는 데이터
- class 인스턴스
- 클로저
- 중첩함수 (클로저 형식으로 저장됨)
2-2) Retain Count가 올라가는 경우
힙 영역에 저장된 인스턴스의 참조값을 사용하는 경우 RC가 올라간다.
스택 영역에서 사용하는 경우는 상관이 없다(어차피 스택 영역은 사라지기 때문에 RC가 잠깐만 올라가고 다시 0이 됨)
하지만, 힙 영역에 존재하는 2개 이상의 인스턴스가 서로를 가리킬 경우 메모리에서 해제 되지 않아 메모리 누수가 발생할 수 있다.
728x90
'iOS > 면접' 카테고리의 다른 글
UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오. (0) | 2023.06.19 |
---|---|
Strong과 Weak 참조 방식에 대해 설명하시오. (0) | 2023.06.15 |
ARC란 무엇인지 설명하시오. (2) | 2023.06.15 |
Left Constraint 와 Leading Constraint 의 차이점을 설명하시오. (0) | 2023.06.13 |
SafeArea에 대해서 설명하시오. (0) | 2023.06.13 |