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
- firebase
- 카카오맵클론
- mrc
- ARC
- alamofire
- RxSwift
- Swift코딩테스트
- 프로그래머스
- 앱의생명주기
- RC
- AutoLayout
- iOS앱 디버깅
- 시험에자주나오는것만
- Bubble Search
- unittest
- firestore
- UIKit
- Swift디자인패턴
- SWIFT
- 반응형프레임워크
- IOS
- ReactorKit UnitTest
- TDD
- hackerrank
- 코딩테스트입문
- Safari Inspector
- ios면접
- algorithm
- HackersRank
- Di
Archives
- Today
- Total
샘성의 iOS 개발 일지
ARC란 무엇인지 설명하시오. 본문
728x90
1. Reference Counting(RC)이란?
: 힙(Heap) 영역의 RC(Reference Count - 참조 숫자)를 세어본 후, RC(참조 숫자)가 0인 순간, 메모리 관리 혹은 컴파일 할 때 메모리 해제시점을 결정하는 방식
- RC 모델 방식을 개발자가 직접 수동으로(Manual) 구현하여 메모리 관리를 하는 모델
- Objective-C에서 사용하는 방식
- 현재는 MRC, ARC 방식 둘 중 선택 가능
- 수동으로 RC를 개발자가 구현하여 메모리 관리가 필연적인 모델
- 메모리를 관리하기 위한 변수 var refCount: Int 존재
- retain() : RC(참조 숫자)를 +1 하는 코드 → 메모리 할당**
- release() RC(참조 숫자)를 -1 하는 코드 → 메모리 해제**
⇒ 할당과 해제 둘다 구현해야 하기에 개발자의 실수 가능성 다분했음
2. Automatic Reference Counting(ARC)
: Xcode에서 컴파일 할 때 컴파일러가 자동으로 RC 모델 방식으로 메모리를 관리하는 방식 (수동 관리 불가능).
⇒ 컴파일러가 참조 숫자를 잘못 인식하지 않도록 유의해야함
- Swift에서 사용하는 방식
- 현재 Objective-C에서도 ARC 모델 사용 가능
- retain()와 release() 코드를 컴파일러가 자동으로 심어줘서 메모리 정리
- 컴파일 과정에서 오류 발생 가능성 있기에 개발자는 ARC 모델 이해하고 메모리 정리해야함
- 메모리가 할당되면 retain() 키워드 컴파일러가 구현 → RC +1
- 메모리가 해제되면 (e.g. nil 할당) release() 키워드 컴파일러가 구현 → RC -1
- ⇒ retain()과 release()를 개발자가 수동으로 구현하여 관리 불가능
* ARC모델의 기반 : 소유 정책과 참조 카운팅
- 소유 정책: 인스턴스는 하나 이상의 소유자가 있는 경우 메모리에 유지됨 ⇒ 소유자가 없으면 메모리에서 제거
- 참조 카운팅: 인스턴스(나)를 가리키는 소유자 수를 카운팅
728x90
'iOS > 면접' 카테고리의 다른 글
Strong과 Weak 참조 방식에 대해 설명하시오. (0) | 2023.06.15 |
---|---|
Retain Count 방식에 대해 설명하시오. (0) | 2023.06.15 |
Left Constraint 와 Leading Constraint 의 차이점을 설명하시오. (0) | 2023.06.13 |
SafeArea에 대해서 설명하시오. (0) | 2023.06.13 |
Storyboard를 이용했을때의 장단점을 설명하시오. (0) | 2023.06.13 |