๋ฐ์ํ
Q. ๋ฉ๋ชจ๋ฆฌ ๋ฆญ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
A.
๋ฉ๋ชจ๋ฆฌ ๋ฆญ(๋์)๋ ์ฌ์ฉ๋์ง ์๋ ์ธ์คํด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ญ๋น๋๋ ํ์์ ๋๋ค.
Q. ์ํ ์ฐธ์กฐ(Reference Cycle)์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
A.
1. ๋ ๊ฐ์ง ๊ฐ์ฒด๊ฐ ์๋ก์ ๋ํ ๊ฐํ์ฐธ์กฐ ์ํ๋ฅผ ๊ฐ์ง ๋ ์ํ ์ฐธ์กฐ๋ผ๊ณ ํฉ๋๋ค.
2. ์ํ์ฐธ์กฐ๊ฐ ๋ฐ์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ฝํ ์ฐธ์กฐ๋ฅผ ํตํด ์ด๋ฅผ ํด์์์ผ์ค์ผ ํฉ๋๋ค.
Q. Retain Count ๋ฐฉ์์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
A.
1. ARC์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฐฉ์์ Retain Count ๋ฐฉ์์ด๋ผ๊ณ ํฉ๋๋ค.
2. ๋ฉ๋ชจ๋ฆฌ์์ reference count๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒ์ retain, ๊ฐ์์ํค๋ ๊ฒ์ release๋ผ๊ณ ํฉ๋๋ค.
Q. weak๊ณผ unowned๋ฅผ ๋น๊ต ์ค๋ช ํด์ฃผ์ธ์
A.
1.
weak๋ ์ฐธ์กฐ๋์์ด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์์ ๋ nil์ด ์ค์ ๋๋ optional์ด์ง๋ง,
unowned๋ ์ฐธ์กฐ๋์์ด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์์ ๋ nil์ด ๋์ง ์๊ณ ์๋ฌ๋ฅผ ๋ฐ์์ํต๋๋ค.
2.
weak์ sidetable์ ๊ฑฐ์ณ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค์ง๋ง
unowned๋ ๊ฐ์ฒด๋ฅผ ์ง์ ๊ฐ๋ฆฌํต๋๋ค.
3.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ unownedํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, strong reference count๊ฐ 0์ด ๋๋ฒ๋ฆฌ๋ฉด dangling pointer๊ฐ ๋์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค ํด์ ์์ ์ ์๋ฏผํ๊ฒ ๊ณ ๋ คํด์ค์ผ ํฉ๋๋ค.
4.
weak๋ weak reference๋ฅผ ์ฆ๊ฐ์ํค๊ณ , unowned๋ unowned reference๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
Q. side table์ด ๋ฌด์์ด๊ณ , reference count ์ข ๋ฅ์ ๋ํด ์์ธํ ์ค๋ช ํด์ฃผ์ธ์
A.
1.
side table์ Heap Object์์ weak rc๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ณ๋๋ก ์์ฑ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
weak ์ฐธ์กฐ๋ฅผ ํ๊ฒ๋๋ฉด ์๋์ผ๋ก side table์ด ์์ฑ๋ฉ๋๋ค.
2.
side table์ Swift4 ์ด์ ์ ์ข๋น ์ค๋ธ์ ํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ ๋์์ต๋๋ค.
3.
reference count์๋ strong, unowned, weak๋ก 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ต๋๋ค.
HeapObject, struct ๋ด๋ถ์์๋ ์ด 3๊ฐ์ง์ ๋ํ rc๋ค์ ๋ชจ๋ countingํฉ๋๋ค.
4.
strong rc๊ฐ 0์ด๋๋ฉด ์ธ์คํด์ค๊ฐ deinit ์ํ๊ฐ ๋ฉ๋๋ค.
์ด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ dealloc๋ ์ํ๋ ์๋๋๋ค.
5.
unowned rc๊ฐ 0์ด๋๋ฉด dealloc ์ํ๊ฐ ๋์ด ์์ ํ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋ฉ๋๋ค.
6.
dealloc์ด ๋์์ด๋ weak rc๊ฐ 0์ด๋ผ๋ฉด side table์ด ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์์ต๋๋ค.
์ด๋ฅผ freed ์ํ๋ผ๊ณ ํฉ๋๋ค.
7.
weak rc์ด 0์ด๋๋ฉด ๋น๋ก์ ๊ฐ์ฒด๋ ์์ ํ ์ฃฝ์ด DEAD ์ํ๊ฐ ๋ฉ๋๋ค.
Q. ์ข๋น ์ค๋ธ์ ํธ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
1.
์ข๋น ์ค๋ธ์ ํธ๋ strong rc๊ฐ 0์ด์ง๋ง weak rc๊ฐ 0๋ณด๋ค ํด ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์์ ํ ํด์ ๊ฐ ์ผ์ด๋์ง ์์ ์ค๋ธ์ ํธ๋ฅผ ๋งํฉ๋๋ค.
2.
๋ฐํ์์ weak reference๋ฅผ ํตํด์ ์ข๋น ์ค๋ธ์ ํธ๊ฐ ํด์ ๋ ์ ์์ง๋ง ๋นํจ์จ์ ์ ๋๋ค.
Q. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๊ณผ ์คํ์ผ๋ก ๋๋๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
1.
๋ฉ๋ชจ๋ฆฌ์์ ํ๊ณผ ์คํ์ ๊ฐ์ ์ญํ ์ด ๋ค๋ฆ ๋๋ค.
ํ ์์ญ์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ณต๊ฐ์ด๊ณ ,
์คํ ์์ญ์ ํจ์ ๋งค๊ฐ๋ณ์๋ ์ง์ญ๋ณ์ ๋ฑ ์คํ ์ค์ด ์๋ ์ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ณต๊ฐ์ ๋๋ค.
2.
ํ ์์ญ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๊ณผ ํด์ ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ฃผ์ด์ผํ๊ณ ,
์คํ ์์ญ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๊ณผ ํด์ ๋ append์ pop์ ๋ฐ๋ณตํ๋ฉฐ ์๋์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
3.
์ํฉ๋ณ๋ก ์ฒ๋ฆฌํด์ค์ผํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ญํ ๊ณผ ์ข ๋ฅ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์
ํ ์์ญ๊ณผ ์คํ์์ญ์ ๋๋์ด ์ค๊ณํจ์ผ๋ก์จ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํ ๊ฒ์ ๋๋ค.
Ref
https://velog.io/@heyksw/iOS-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84-ksl8uxwf
๋ฐ์ํ
'๐ฃ๏ธ ๋ฉด์ > ๋ฉด์ ์ง๋ฌธ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ARC, MRC (0) | 2023.05.18 |
---|---|
์ต์ ๋ฒ ํจํด (0) | 2023.05.18 |
MVVM, MVC ํจํด (0) | 2023.05.18 |