2022. 6. 24. 16:19ใProgramming/Swift
ARC (Automatic Reference Counting)
: Objective-C / Swift์ ๋ํ ์๋ ์ฐธ์กฐ ๊ณ์ฐ์ ์ ๊ณตํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ
- ์ปดํ์ผ ์ ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์๋์ผ๋ก retain, release๋ฅผ ์ ์ ํ ์์น์ ์ฝ์
- Objective-C ์์๋ ์๋์ผ๋ก reference count ์ฆ๊ฐ์ ํตํด ๊ฐ์ฒด ์ ์ง ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
-> ์๋์ผ๋ก ์์ฑ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ Data, Heap, Stack, Code ์ด๋ ๊ฒ 4๊ฐ์ง ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค ํ ์์ญ๊ณผ ๊ด๋ จ์์
- Heap ์ class, closure ๋ฑ์ ์ฐธ์กฐํ(reference) ์๋ฃ ๋ค์ด ๋จธ๋ฌด๋ ๊ณต๊ฐ
+ ๊ฐ๋ฐ์๊ฐ ๋์ ์ผ๋ก ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ -> ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํ์
Heap ์์ญ์ ์ฐธ์กฐํ ์๋ฃ๋ค์ด ์ผ๋ง๋ ์ฐธ์กฐ๋๊ณ ์๋์ง ์นด์ดํ & ์ด์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ ์ ๊ฑฐ
-> ์ด๊ฒ์ ์๋์ผ๋ก ์ถ์ ๋ฐ ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ARC !
ARC์ ๋ฉ์ปค๋์ฆ์ Swift Runtime ์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ๋จ
Swift Runtime์ ๋์ ํ ๋น๋๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ HeapObject๋ผ๋ ๊ตฌ์กฐ์ฒด๋ก ํํ
HeapObject์์๋ Swift์์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๋ฐ์ดํฐ, ์ฆ reference count์ type meta data๋ฅผ ํฌํจ
ARC ์ ๋ฆฌ: ๊ฐ์ฒด์ ๋ํด ๊ฐํ ์ฐธ์กฐ๊ฐ ๋จ์ ์๋ ํ ํด๋น ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ ํด์ X
but ๊ฐํ ์ฐธ์กฐ๋ง ์ด๋ค๋ฉด ์ผ์ผ์ด ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ์ํด ์ ๊ฒฝ ์จ์ผํจ -> ์์ฒญ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น
๊ทธ๋์ iOS์๋ weak, unowned์ ํตํด ๋ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ฐ๋ฅ
์ถ์ฒ:
https://sujinnaljin.medium.com/ios-arc-๋ฟ์๊ธฐ-9b3e5dc23814
https://devsrkim.tistory.com/entry/Swift-๋ฉ๋ชจ๋ฆฌ๋ฅผ-์ฐธ์กฐํ๋-๋ฐฉ๋ฒ-Strong-Weak-Unowned
https://velog.io/@wook4506/iOS-Swift-๋ฉ๋ชจ๋ฆฌ-์ฐธ์กฐ-๋ฐฉ๋ฒ-strong-weak-unowned
'Programming > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Fileprivate ๋? (0) | 2022.07.21 |
---|---|
๐ฉโ๐ป UUID(Universally Unique IDentifier)๋? (0) | 2022.06.30 |
@IBAction & @IBOutlet ๐ค (0) | 2022.06.24 |
[Swift UI] View / Some์ด๋? / ContentView / Previews (0) | 2022.06.16 |
[SwiftUI] Geometry Reader (0) | 2022.06.16 |