์ฐธ์กฐํ์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
๊ตฌ๋ถ | ๊ฐ ํ์ | ์ฐธ์กฐ ํ์ |
ํ์ | Value Type | Reference Type |
๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ฅ ์์น | Stack (ํ์์์ ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ๋ณต์ฌ๋์ด ์ ๋ฌ ๊ฐ์ ์ ์ฅ) |
Heap (ํ์์์ ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ์ ๋ฌ ๊ฐ์ ์ ์ฅ) (์ฃผ์๋ Stack์ ์ ์ฅ) |
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์ | ์คํ์ ์ค์ฝํ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์๋ ์ ๊ฑฐ | RC(Refence Counting, ์ฐธ์กฐ ์ซ์)์ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ |
๊ฐ ํ์์ ํ์ ์์ | ์ค์ํํธ ๊ธฐ๋ณธ ํ์ | ํด๋์ค, ํด๋ก์ |
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ?
์ฝ๋ (ํ๋ก๊ทธ๋จ) | ๋ฐ์ดํฐ | ํ โญ๏ธ | ์คํ |
๋ช ๋ น์ด / ํ๋ก๊ทธ๋จ | ์ ์ญ๋ณ์ / ํ์ (static/class) ๋ณ์ |
๋์ ํ ๋น (์ผ๋ฐ์ ์ผ๋ก ์ค๋ซ๋์ ๊ธด์๊ฐ ๋์ ์ ์ฅ) (๋น์ด์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์์ ํ ๋นํ๋ ํ์) |
ํจ์์คํ์ ์ํ ์์์ ๊ณต๊ฐ |
์ฑ(ํ๋ก๊ทธ๋จ)์ ๋ชจ๋ ์ฝ๋(text) | ๊ณตํต์ผ๋ก ๊ณต์ ํ๊ธฐ ์ํ ๋ฐ์ดํฐ | ํฌ๊ธฐ๊ฐ ํฌ๊ณ , ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ | ํฌ๊ธฐ๊ฐ ์๊ณ , ๋น ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐ์ดํฐ |
์ฑ์ด ์คํ๋๋ ๋์ ๋ถ๋ณ | ๊ฐ๋ฐ์๊ฐ ์ ๊ด๋ฆฌํด์ผํจ | ์์์ ์๋ ๊ด๋ฆฌ๋จ |
๋์ ํ ๋น์ด๋?
๋น์ด์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์์ ํ ๋นํ๋ ํ์
๋น์ด์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด์ ํ ์์ญ์ ๋ชจ๋ ์ค์บํ๊ธฐ ๋๋ฌธ์ ๋๋ฆด ์ ๋ฐ์ ์์
- Heap ์์ญ์ ํ ๋น๋๋ ๋ฐ์ดํฐ๋ ๊ด๋ฆฌํด์ผ ํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๊ฐ ๋๋ค.
- ํ ๋น์ด ํด์ ๋์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋์(Mamory Leak) ํ์์ด ๋ฐ์
์ค์ํํธ์์๋ reference Counting(์ฐธ์กฐ ์ซ์)๋ฅผ ์ธ๋ ๊ฒ์ ํตํด , ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ / ์ปดํ์ผ์์ ๋ฉ๋ชจ๋ฆฌ ํด์ ์์ ์ ๊ฒฐ์
๋ฉ๋ชจ๋ฆฌ๋ RC(reference counting)์ ์ํด ๊ด๋ฆฌ๋๋ค.
Objective-C | Swift |
MRC (manual ์๋ RC) | ARC(Automatic RC) |
ARC |
ARC
- ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์ง์ ๋ฃ์ง ์๊ณ , ์ปดํ์ผ๋ฌ(Xcode)๊ฐ ์์์ ๋ฃ์ด์ค (๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ฆ๊ฐ)
- ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๊ฐ ์๋ชป ์ ๋ ฅํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ RC๋ฐฉ์์ ์๋ชป ์ธ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ (๊ฐ๋ฐ์๊ฐ RC๋ฅผ ์ ์๊ณ ์ฌ์ฉํด์ผ ํ๋ ์ด์ )
MRC
- ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ๊ด๋ฆฌ
- ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ํด์ ์ฝ๋๊น์ง ์ฝ์ ํด์ผํจ ( ์ค์ํ ๊ฐ๋ฅ์ฑ ๋์ )
RC๋ ๋ง ๊ทธ๋๋ก ํด๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ๋ค์ด ๋ช ๊ฐ๊ฐ ์๋๋ฅผ ํ์ ํ ์ ์๋ ๋ณ์์ด๋ค.
๋ฐ๋ผ์ RC == 0 ์ด ๋์์ ๋๋ ์ฐธ์กฐํ์ง ์๋ ๋ค๋ ๋ป์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ ๊ฐ ๋๋ค.
๊ฐํ ์ฐธ์กฐ ์ฌ์ดํด (Strong Reference Cycle)
- ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ์ฐธ์กฐํ๋ ๊ฐํ ์ฐธ์กฐ ์ฌ์ดํด
- ๊ฐ์ฒด๋ค์ด ์๋ก๋ฅผ ๊ฐ๋ฅดํค๊ณ ์๋ค๋ฉด ํญ์ 1์ด์์ด ๋๋ ๋ฌธ์ ๊ฐ ์๊น
- ์๋ฌด๋ฆฌ ๊ฐ๋ฐ์๊ฐ nil๊ฐ์ ์ค์ ๋งค๋ชจ๋ฆฌํด์ ๋ฅผ ์ํค๊ณ ์ ํ์ฌ๋ ํด์ ์๋จ ( ๋ฉ๋ชจ๋ฆฌ ๋์: memory leak )
๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ RC๋ฅผ ๊ณ ๋ คํ์ฌ, ์ฐธ์กฐ ํด์ ์์๋ฅผ ์ฃผ์ํด์ ์ฝ๋๋ฅผ ์์ฑํด์ผํจ
๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)์ ํด๊ฒฐ๋ฐฉ์
Weak Reference (์ฝํ ์ฐธ์กฐ) | Unowned Reference (๋น์์ ์ฐธ์กฐ) | |
๋ฐฉ์ | weak ํค์๋ | unowned ํค์๋ |
์์ | weak var pet: Dog? ( nil ์๋ ํ ๋น ) |
unowned var pet: Dog? (Swift 5์ดํ, ์ต์ ๋ ์ ์ธ ๊ฐ๋ฅ, nil ์๋ํ ๋น x) |
์ฐจ์ด์ |
์์ ์์ ๋นํด, ์งง์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ๋ ์ฃผ๋ก ์ฌ์ฉ (์ธ์คํด์ค๊ฐ nil๋ก ํ์ธ ๊ฐ๋ฅ, nil์ธ ๊ฒฝ์ฐ ์์ ์ ์ค๋จํ๋ ๊ฒ ๊ฐ๋ฅ) |
์์ ์์ ๋นํด, ๊ธธ๊ฑฐ๋ ๊ฐ์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ๋ ์ฃผ๋ก ์ฌ์ฉ (์ธ์คํด์ค๊ฐ nil๋ก ํ์ธ ๋ถ๊ฐ๋ฅ, ์ค์ ์ธ์คํด์ค๊ฐ ํด์ ๋์๋ค๋ฉด ์๋ฌ ๋ฐ์) |
์ฐธ์กฐ ์ธ์คํด์ค์ ์๋ฉธ | nil๋ก ์ด๊ธฐํ | nil๋ก ์ด๊ธฐํ x |
๊ณตํต์ | ๊ฐ๋ฅดํค๋ ์ธ์คํด์ค์ RC์ ์ซ์๋ฅผ ์ฌ๋ผ๊ฐ์ง ์๊ฒ ํจ(์ธ์คํด์ค ์ฌ์ด์ ๊ฐํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐ) weak/unowned๋ก ์ ์ธํ ๋ณ์๋ฅผ ํตํด ์ธ์คํด์ค์ ์ ๊ทผ์ ๊ฐ๋ฅํ์ง๋ง, ์ธ์คํด์ค๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ |
โunowned ์ฌ์ฉ์ ํ๋ฒ ๋ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์, ์ค์ ๋ก๋ weakํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ฝํ ์ฐธ์กฐ๋ฅผ ์ค์ ํ๋ก์ ํธ์์ ๋ง์ด ์ฌ์ฉ
๋น์์ ์ฐธ์กฐ
- ์ฐธ์กฐ ์ธ์คํด์ค๊ฐ ์ฌ๋ผ์ก์๋, nil๋ก ์ด๊ธฐํ๊ฐ ๋์ง ์์์ weak๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ ๋ ์ค๋ฅ ๋ฐ์
- nil๋ก ์ด๊ธฐํ๋์ง ์๋ ๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด nil์ ํ ๋นํด์ฃผ๋ ์์ ์ด ํ์ํจ
- unowned๊ฐ weak๋ณด๋ค ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฆ
- ์ค์ ์ ๋ฌด๋ฅผ ์ํํ๊ธฐ ์ํด์ unowned๋ฅผ ์ ํ์ ํ๋๊ฒ ์ค์
๋ณ์ / ํ์ | let | var | Optional | Non-Optional |
strong (๊ธฐ๋ณธ ์ ์ธ ํค์๋) |
o | o | o | o |
weak ํค์๋ | x (๊ฐ๋ณํด์ผํจ) |
o | o | x (nil์ ํ ๋นํ ์ ์์ด์ผ ํจ) |
unowned ํค์๋ | o | o | o (Swift 5 ~ ) |
0 |
* weak ์ฌ์ฉ์๋ง ์ฃผ์ํ๋ฉด ๋จ (๋๋จธ์ง ๋ค ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ)
โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ ( ์ ์ดํด๊ฐ ์๊ฐ๋ ๋ถ๋ถ ๋ค์ ๊ณต๋ถํด์ผํ ๋ฏ )
ํด๋ก์ ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
์บก์ณํ์
- ํด๋ก์ ๋ (ํด๋ก์ ์ ์ฃผ๊ธฐ๋์ ์ฌ์ฉ์ด ํ์ ์์ด์ง๋๊น์ง) ํ (Heap) ์์ญ์ ์กด์ฌํด์ผํ๊ณ , ํด๋ก์ ๋ด๋ถ์์ ์ธ๋ถ์ ์กด์ฌํ๋ ๋ณ์๋ฅผ ๊ณ์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด ์บก์ณ ํ์์ด ๋ฐ์
- ํด๋ก์ ๋ ์์ ์ด ์ฌ์ฉํ ์ธ๋ถ์ ๋ณ์๋ฅผ ์บก์ณํจ
- ๊ฐํ์ (์ฐธ์กฐ๋ฅผ ์บก์ณ) - ์บก์ณ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋, ํด๋ก์ ์ธ๋ถ์ ์กด์ฌํ๋ ๋ฐธ๋ฅํ์ ์ ์ฐธ์กฐ (๋ณ์์ ์ฃผ์)๋ฅผ ์บก์ณ(์ ์ฅ)ํ๋ค. (์ธ๋ถ์์ธ์ ์ํด ํด๋น ๊ฐ์ด ๋ณํ์ ๋์๋ ๊ณ์ ์ฐธ์กฐ)
- ์ฐธ์กฐํ์ (๋ณ์์ฐธ์กฐ๋ฅผ ์บก์ณ) - ์บก์ณ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋, ๋ณ์์ ์ฃผ์๋ฅผ ์บก์ณ(์ ์ฅ)ํ๋ค.
์บก์ณ๋ฆฌ์คํธ
๋ฌธ๋ฒ
(ํ๋ผ๋ฏธํฐ ์๋ ๊ฒฝ์ฐ)
{ [์บก์ณํ ๋ณ์๋ช : ์บก์ณ๋ฆฌ์คํธ] in
์ฝ๋ ์์ฑ
}
(ํ๋ผ๋ฏธํฐ ์๋ ๊ฒฝ์ฐ)
{ [์บก์ณํ ๋ณ์๋ช : ์บก์ณ๋ฆฌ์คํธ] (ํ๋ผ๋ฏธํฐ) -> ๋ฆฌํดํ in
์ฝ๋ ์์ฑ
}
- ํด๋ก์ ์์์ ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ์บก์ณ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฌธ๋ฒ
- ์ฝํ์ฐธ์กฐ(Weak Reference)์ ๋น์์ ์ฐธ์กฐ(Unowned Reference) ์ ์ธ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฅ์น (ํด๋ก์ ๋ด๋ถ์์ ๊ฐํ ์ฐธ์กฐ ์ฌ์ดํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๊ฒ ํจ)
- ๊ฐํ์ (์ฐธ์กฐ๋ฅผ ์บก์ณ) - ์บก์ณ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋, ๋ณ์์ ์ฃผ์๋ฅผ ์บก์ณ(์ ์ฅ)ํ๋ค.(์ธ๋ถ์ ์ธ ์์ธ์ ์ํ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ ๋ฐฉ์ง)
- ์ฐธ์กฐํ์ (์ฐธ์กฐ๋ฅผ ์ง์ ์บก์ณ) - ์บก์ณ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ๋, ์ง์ ์ ์ผ๋ก ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์บก์ณํ๋ค.
- ์บก์ณ๋ฆฌ์คํธ์์ ๋ฐ์ธ๋ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. (๋ด๋ถ์์ ๋ณ์๋ช ๋ฐ๊ฟ์ ์ฌ์ฉ ๊ฐ๋ฅ)
๊ฐํ์ (Value Type) | ์ฐธ์กฐ ํ์ (Value Type) | |
์บก์ณ |
let closure = { print ("๋ฐธ๋ฅ๊ฐ ์ถ๋ ฅ: \(num)") } |
let refCapture = { print ("์ฐธ์กฐ๊ฐ ์ถ๋ ฅ: \(x.num)") } |
ํด๋ก์ ์ธ๋ถ์ ์กด์ฌํ๋ ํ์
์ ์ฐธ์กฐ(๋ณ์ ์ฃผ์)๋ฅผ ์บก์ณ (์ธ๋ถ์์ธ์ ์ํด ํด๋น ๊ฐ์ด ๋ณํ์ ๋๋ ๊ณ์ ์ฐธ์กฐ) |
||
์บก์ณ๋ฆฌ์คํธ |
let closure = {[num] in print("๋ฐธ๋ฅ๊ฐ ์ถ๋ ฅ:\(num)") } |
let refCapture = {[x] in print("์ฐธ์กฐ๊ฐ ์ถ๋ ฅ:\(x.num)") } |
ํด๋ก์ ์ธ๋ถ์ ์กด์ฌํ๋ ์ฐธ์กฐ ํ์
์ ์ฃผ์๊ฐ์ ๋ณต์ฌํด์ ๋ด๋ถ์ ์ ์ฅํ๊ณ ์ฌ์ฉ (์ธ๋ถ์์ธ์ ์ํด ํด๋น ์ธ์คํด์ค์ ํด์ ๋ฅผ ๋ฐฉ์งํ ๋ ์ฌ์ฉ) -> ๊ฐ๋ฅดํค๋ ์ธ์คํด์ค์ RC๋ฅผ ์ฌ๋ผ๊ฐ๊ฒ ํจ์ผ๋ก์จ, ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋ ๊ฐ๋ฅ์ฑ์ ๋ฐฉ์ง |
||
weak(์ฝํ)/unowned(๋น์์ ) ์ฐธ์กฐ ์ ์ธ์ด ๊ฐ๋ฅ (๊ฐํ ์ฐธ์กฐ ์ฌ์ดํด ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ) |
๊ฐ์ฒด ๋ด์์ ํด๋ก์ ์ฌ์ฉ์์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (์ผ๋ฐ์ ์ผ๋ก ํด๋ก์ ๋ ๊ฐ์ฒด ๋ด์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ค์โญ๏ธ)
- ์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ ๋ , ์ฝ๋์ ๋ฐ์ดํฐ์ ํ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ ๊ณต์
- ํด๋ก์ ๊ฐ ์คํ์ค์ธ ๋์ ์ค๋ซ๋์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก , ํ ์์ญ์ ์ ์ฅํ๊ณ ์ฌ์ฉํ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๋ณด๊ดํ๋ค.
- ํด๋ก์ ๋ ์ด๋ ๋ฉ์ธ์ฐ๋ ๋๊ฐ ์๋ ๋ค๋ฅธ ์ฐ๋ ๋์ stack์์ญ์์ ์๋ํ๋๋ฐ, ํด๋ก์ ๊ฐ ์คํ์ด ์๋ฃ๋๋ค๋ฉด stack์์ ์ ๊ฑฐ๋๋ค.
- ์คํ ์คํ์์ ์ผ์ด ์ข ๋ฃ๋์ด์ , ์ผ์ ๋์ด์ ํ ํ์๊ฐ ์์ด์ง๋ฉด ์ค์ ํ์ ์ ์ฅ๋์ด ์๋ ํด๋ก์ ๋ ์ฌ๋ผ์ง๋ค.
๐ stack์์ ํด๋ก์ ๊ฐ ๋์ํ๋ ๋์ heap์์ญ์ ์๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ง์ง ์๋ ์ด์ ๋?
๊ฐ์ฒด ๋ด์ ํด๋ก์ ๊ฐ ๊ตฌํ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ํด๋ก์ ๊ฐ ๋ด๋ถ์์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ์ํฉ์ด๋ค. ๋ฐ๋ผ์ ํด๋ก์ ๊ฐ ๋์์ ํ๋ ์ํฉ์๋ RC๊ฐ 1์ด ๋๊ธฐ ๋๋ฌธ์, ์ฌ๋ผ์ง์ง ์๊ณ ๋จ์์์ ์ ์๋ค.
- ํด๋ก์ ๋ด์์ ๊ฐ์ฒด(์ฐธ์กฐ ํ์
)์ ์์ฑ ๋ฐ ๋ฉ์๋ ์ ๊ทผ์ ๋ฐ๋์ selfํค์๋ ์ฌ์ฉ
- ํด๋ก์ ์ธ๋ถ์ ์กด์ฌํ๋ ์ฐธ์กฐ ํ์ ์ ์ฃผ์๋ฅผ ์บก์ณํจ (== ๊ฐํ ์ฐธ์กฐ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ Strong Referencw Cycle ๋ฐ์ ๊ฐ๋ฅ)
- ํด๋ก์ ๋ฅผ ๊ฐ์ฒด ๋ด์์ ์ฌ์ฉํ ๋๋ ๋๋ถ๋ถ weak๊ณผ ํจ๊ป ์ฌ์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. (ํด๋ก์ ์ ๊ฐํ ์ฐธ์กฐ ํด๊ฒฐ : ์บก์ณ๋ฆฌ์คํธ + ์ฝํ/๋น์์ ์ฐธ์กฐ)
- weakํค์๋๋ฅผ ์ฌ์ฉํ ๋๋ ๊ฐ๋๋ฌธ์ ํตํด early exit์ ์์ผ์ค๋ค. (๊ฐ์ฒด ์์ผ๋ฉด ์ผ ์ข ๋ฃ)
- ํ ์์ญ์์ ํด๋ก์ ๊ฐ ๊ฐ์ฒด ๋ด๋ถ์ ์์ด๋ ํด๋ก์ ์ ๊ฐ์ฒด๋ ๋ ๋ฆฝ์ ์ธ ์์๋ผ๊ณ ์ทจ๊ธํ๋ฉฐ, ํด๋ก์ ๊ฐ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํจ
'swift ๋ฌธ๋ฒ๐ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWIFT] ์๋ฌ ์ฒ๋ฆฌ (Error Handling) (0) | 2023.05.12 |
---|---|
[SWIFT] ๋์ ๋๋ฆฌ (Dictionary) (0) | 2023.05.12 |
[SWIFT] ์ต์ ๋ ์ฒด์ด๋(Optional Chaining) (1) | 2023.05.10 |
[SWIFT] ๊ณ ์ฐจํจ์(Higher-order Function) map{}, filter{}, reduce{}, forEach{}, compactMap{}, flatmap{} (0) | 2023.04.18 |
[SWIFT] ์์ฑ์ (0) | 2023.03.07 |