iOS/🟠 Swift

ARC - Memory

woozzang 2020. 12. 30. 23:49

"Auto Reference Counting"

 

λ°°κ²½

더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” μΈμŠ€ν„΄μŠ€κ°€ λ©”λͺ¨λ¦¬μ— λ‚¨μ•„μžˆλ‹€λ©΄ λ©”λͺ¨λ¦¬ λˆ„μˆ˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

 

λ©”λͺ¨λ¦¬ λˆ„μˆ˜λŠ” μ•± μ„±λŠ₯의 μ €ν•˜λ‘œ 이어지기 λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€μ˜ μ μ ˆν•œ ν•΄μ œλŠ” μ€‘μš”ν•œ μ΄μŠˆμž…λ‹ˆλ‹€.

 

stack 에 μ €μž₯된 μΈμŠ€ν„΄μŠ€ ( κ°’ νƒ€μž… ) λŠ” ν•΄λ‹Ή 블둝이 μ’…λ£Œλ˜λ©΄ μžλ™μœΌλ‘œ ν•΄μ œλ˜μ§€λ§Œ,

 

heap 에 μ‹€μ œ 데이터가 μ €μž₯된 μ°Έμ‘° νƒ€μž…μ€ λ©”λͺ¨λ¦¬ ν•΄μ œλ₯Ό 직접 ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.


 

MRC 와 ARC

Apple 의 κ°œλ°œν™˜κ²½ Cocoa μ—μ„œλŠ” λ©”λͺ¨λ¦¬ 관리 λͺ¨λΈμ΄ 두 κ°€μ§€κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.

 

MRC ( Manual Reference Counting) κ³Ό ARC (Auto Reference Counting) μž…λ‹ˆλ‹€.

 

Objective - C μ—μ„œλŠ” MRC 와 ARCλ₯Ό λͺ¨λ‘ μ§€μ›ν•©λ‹ˆλ‹€.

 

ν•˜μ§€λ§Œ MRC λŠ” λ©”λͺ¨λ¦¬ ν•΄μ œ 와 μ°Έμ‘° μΉ΄μš΄νŒ…μ„ 직접 λͺ¨λ‘ 관리 ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— κΌ­ ν•„μš”ν•œ κ²½μš°κ°€ μ•„λ‹ˆλ©΄ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

Switft μ—μ„œλŠ” ARC 만 μ§€μ›ν•©λ‹ˆλ‹€.


 

ARC 의 μž‘λ™ 방식

ARC λͺ¨λΈμ€ 컴파일 νƒ€μž„μ— μ»΄νŒŒμΌλŸ¬κ°€ νŒλ‹¨ν•˜μ—¬ μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬ ν•΄μ œ μ½”λ“œλ₯Ό λ„£μŠ΅λ‹ˆλ‹€.

 

λ”°λΌμ„œ λ©”λͺ¨λ¦¬ ν•΄μ œμ™€ μ†Œμœ μ— κ΄€λ ¨λœ λ©”μ†Œλ“œλ“€μ„ 직접 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

 

ν•˜μ§€λ§Œ 컴파일 νƒ€μž„μ— ARC λŠ” 무엇을 근거둜 λ©”λͺ¨λ¦¬ ν•΄μ œ μ½”λ“œλ₯Ό λ„£μ„κΉŒμš”?

 

μΈμŠ€ν„΄μŠ€μ˜ μ°Έμ‘° 개수 μž…λ‹ˆλ‹€.

 

즉, μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ³€μˆ˜ ν˜Ήμ€ μƒμˆ˜μ˜ 개수λ₯Ό μ„Έμ–΄, κ·Έ κ°œμˆ˜κ°€ 0이 될 λ•Œ λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œν•΄μ•Ό ν•œλ‹€κ³  νŒλ‹¨ν•©λ‹ˆλ‹€.

 

λ”°λΌμ„œ μ½”λ“œλ₯Ό μ§€λ•Œ μ›ν•˜λŠ” λ°©ν–₯으둜 μ μ ˆν•˜κ²Œ ARC λ™μž‘ν•˜κ²Œ ν•˜λ €λ©΄, μ•Œμ•„ 두어야 ν•  κ°œλ…μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

κ°•ν•œ μ°Έμ‘°κ°•ν•œ μ°Έμ‘° μˆœν™˜, μ•½ν•œ μ°Έμ‘°, λΉ„μ†Œμœ  μ°Έμ‘°, , ν΄λ‘œμ € 캑처 리슀트 μž…λ‹ˆλ‹€.

 

λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œλŠ” μš©μ–΄ ν•˜λ‚˜μ”© 닀뀄보렀고 ν•©λ‹ˆλ‹€.

 

 

 

끝.


 

λ‹€μŒ κΈ€: Strong Reference - Memory

 

Strong Reference - Memory

"κ°•ν•œ μ°Έμ‘°" μ°Έμ‘° νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ³„λ„μ˜ ν‚€μ›Œλ“œ 없이 μ €μž₯ν•  λ•Œ, 기본적으둜 κ°•ν•œ μ°Έμ‘°κ°€ μƒκΉλ‹ˆλ‹€. Swift의 μ°Έμ‘° νƒ€μž… : Class, Closure κ°•ν•œ μ°Έμ‘°λ₯Ό 톡해 μ €μž₯된 μΈμŠ€ν„΄μŠ€λŠ” λ³€μˆ˜ ν˜Ήμ€ μƒμˆ˜κ°€ 1.

woozzang.tistory.com