์ค๋์ ARC์ ๋ํด ๊ธ์ ์์ฑํด๋ณด๋ คํ๋ค.
iOS ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ค์ด๋ณด๊ธฐ๋ ๋ง์ด ๋ค์ด๋ดค๋๋ฐ,, ์ด์ ์์ผ ๊ณต๋ถ๋ฅผ ํ๋๊ท๋
๐ ARC (Auto Reference Counting)
์ด๋ฐ ๊ฐ๋ ์ฉ์ด๋ค์ ์ธ์ ๋ ๊ทธ๋ ๋ฏ ์ด๋ฆ์ ๋ชจ๋ ๊ฒ์ด,,!
๋ง ๊ทธ๋๋ก '์๋ ์ฐธ์กฐ ์นด์ดํ '์ด๋ค.
ํ ๋จ์ด์ฉ ๋ณด๋ฉด, ์ฐ์ ์ฐธ์กฐ๋ฅผ ์นด์ดํ ํ๋ ์ด์ ๋ ๋ญ๊น? ๐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํจ์ผ๋ฏ
๊ทธ๋ผ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ๋ค? ๐ ํธ๋ฆฌํ๊ฒ, ์ค๋ฅ๋ฅผ ์ ๊ฒ! ํ๊ธฐ ์ํจ์ผ๋ฏ
์ด๋ ๊ฒ ์ด๋ฆ์์ ์ ์ ์๋ฏ
ARC๋ ํจ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
+ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
์ฑ์ ์ฑ๋ฅ์ ์ ์งํ๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ธ๋ฐ,
๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ๋ฉด ํฌ๊ฒ ์คํ ์์ญ, ํ ์์ญ ๋ฑ์ด ์๋ค.
์ด ์ค ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ value ํ์ ์ผ๋ก, ํน๋ณํ ๊ด๋ฆฌ๊ฐ ์์ด๋ ๊ด์ฐฎ๋ค. (์๋์ผ๋ก ์ ๊ฑฐ๋จ)
๊ทธ๋ฌ๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ reference ํ์ ์ด๋ฏ๋ก, ๊ฐ๋ฐ์๊ฐ ๋์ ์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ด์ผํ๋ค.
(์ฐธ์กฐ ํ์ ์ ๊ฒฝ์ฐ ์ธ์คํด์ค๊ฐ ์ฐธ์กฐ๋ฅผ ํตํด ์ฌ๋ฌ ๊ณณ์์ ์ ๊ทผํ๋ฏ๋ก ์ธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋์ง ๋งค์ฐ ์ค์!
์ ์ ํ ์์ ์ ํด์ ๋์ง ์์ผ๋ฉด ํ์ ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ญ๋นํ๊ฒ ๋๊ณ , ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.)
๐ ๋ฐ๋ผ์ ํ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋๊ตฌ๊ฐ ํ์ํ๊ณ ,
ํจ๊ณผ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํด ARC๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ด์ ARC์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ํด ์์๋ณด์!
๐ MRC -> ARC
ARC๋ฅผ ๊ณต๋ถํ๋ ๋ถ๋ค์ด๋ผ๋ฉด ๋ฌด์กฐ๊ฑด MRC๋ผ๋ ๊ฒ๋ ์ ํ๊ฒ ๋์ํ ๋ฐ,,
๋์ ์์ฃผ ๋ฐ์ ํ ์ฐ๊ด์ด ์๊ธฐ์.! ๊ฐ์ด ํ ๋ฒ ์์๋ณด์.
MRC๋ ์์ ์ Objective-C์์ ์ฌ์ฉํ๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค.
1) MRC๋ Manual Reference Counting์ ์ฝ์๋ก,
๊ฐ๋ฐ์๊ฐ ์ง์ retain๊ณผ release๋ฅผ ํธ์ถํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค.
๋ฐ๋ผ์ ์ฝ๋ ์์ด ๋ง์์ง๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๊ฒ ๋์ด ํ๋ก๊ทธ๋จ ์์ ์ฑ์ด ๋ฎ์์ง๋ค.
2) ARC์ ์ํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ ์ ์๊ฒ ๋์๋ค. ARC๋ Xcode4์ ํจ๊ป ๋ฑ์ฅํ๋๋ฐ,
Auto Reference Counting์ด๋ผ๋ ์ด๋ฆ์ ๊ฑธ๋ง๊ฒ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ๋ฃ์ด์ค๋ค.
๋ฐ๋ผ์ ์ฝ๋๋ ํจ์ฌ ์งง์์ง๊ณ , ์์ฐ์ค๋ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ์์ ์ฑ์ ๋์ผ ์ ์๊ฒ ๋์๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ ๊น,,
๋์ถฉ ์๋์ผ๋ก ์ด๋ ต๊ฒ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํ๋ MRC์์
์๋์ผ๋ก ์ฝ๊ณ ํ๋ฆฌํฐ ๋๊ฒ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํด์ฃผ๋ ARC๋ก ๋์ด์๋ค๋๊ฑด ์๊ฒ ๋ค.
๊ทผ๋ฐ retain, release๋ฅผ ํธ์ถํ๋ค,,? ๐ฐ
์ด๊ฑธ ๋จผ์ ์ง๊ณ ๋์ด๊ฐ์ผ๊ฒ ๋ค.
๐ retain, release
๊ฐ ๋จ์ด์ ์๋ฏธ๋ฅผ ์ดํด๋ณด์.
๐ retain
๊ฐ์ฒด์ reference count(retain count)๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์ง ์๋๋ก ์ด ํจ์๋ฅผ ํธ์ถํ์ฌ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๋๊ฒ.!
๐ release
๊ฐ์ฒด์ reference count(retain count)๋ฅผ ๊ฐ์์ํจ๋ค.
๊ฐ์ฒด๋ฅผ ๋์ด์ ํ์๋ก ํ์ง ์์ ๋ ์ด ํจ์๋ฅผ ํธ์ถํ์ฌ ์นด์ดํธ๋ฅผ ๊ฐ์์ํค๋ ๊ฒ.!
์ด๋ ๊ฒ ARC๋ retain, release์ ํธ์ถ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒ์ด๊ณ ,
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ Reference Counting(Retain Counting)์ด๋ผ๊ณ ํ๋ค.๐ฅ
๐ ๋ ํผ๋ฐ์ค ์นด์ดํ (Reference Counting)
์์์ ๋งํ๋ฏ ๋จ์ํ ์๊ฐํ๋ฉด ๋ ํผ๋ฐ์ค ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๋ ์ผ์ด์ง๋ง
์กฐ๊ธ ๋ ์์ธํ๊ฒ..! ๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ ์ ์๋ค.
'compile time์ ์๋์ผ๋ก retain, release๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ํ๋ ๋ฐฉ์'
์์ ์ ์๋ฅผ ๋ท๋ฐ์นจํ๊ธฐ ์ํด ๊ฐ๋จํ ๊ทธ๋ฆผ์ ๊ทธ๋ ธ๋ค.
compile time๊ณผ run time์ผ๋ก ๋๋ ์ ํํํ๋๋ฐ
1) compile time์๋ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์์ธกํ์ฌ ์ ์ ํ ์์น์ retain, release๋ฅผ ์ฝ์ ํด์ค๋ค.
2) run time์ ์ฝ์ ๋ ์ฝ๋๊ฐ ์คํ๋๋ฉด์ retain, release์ ์ํด reference count๋ฅผ ์ฆ๊ฐํ๊ณ
count๊ฐ 0์ด ๋์์ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํ๋ ๊ฒ!
+ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋
' ์ฝ๋๋ฅผ ๋ณด๊ณ ์์ธกํ๋๊ฒ ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง, ๊ทธ๋ฆฌ๊ณ ์ ํํ ์์ธก์ด ๊ฐ๋ฅํ์ง? '
์ด๋ฐ ๊ถ๊ธ์ฆ์ ๊ฐ์ง ์ ์๋ค.
์ด ์ฝ๋ ์์ธก์ ๋ํ ๋ถ๋ถ์
์๋ฐ ๋ฑ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ์ธ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ์ ์ฐจ์ด์ ์ด๊ธฐ๋ ํ๋ค.
1) ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ช ํํ ๊ท์น์ด ์๊ธฐ์ ์์ธก์ด ์ด๋ ต๊ณ , ํ๋ก๊ทธ๋จ ๋์ ์ค์ ํด์ ์์ ์ ๊ฒฐ์ ํ๋ค.
: ๋ณต์กํ ์ํฉ์์๋ ์ธ์คํด์ค๋ฅผ ํด์ ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๊ฐ์๋ฅผ ์ํ ์ถ๊ฐ ์์์ด ํ์ํ๋ฏ๋ก ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๊ณ ,
์ธ์คํด์ค๊ฐ ์ธ์ ์ ํํ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋์ง ์ ์ ์๋ค.
2) ARC๋ ๋ช ํํ ๊ท์น์ ๊ฐ์ง๊ณ ์ปดํ์ผ ์ ์ธ์คํด์ค ํด์ ์์ ์ ๋ฏธ๋ฆฌ ์์ธกํ์ฌ ๊ฒฐ์ ํ๋ค.
: ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ์์คํ ์์์ ์ถ๊ฐํ ํ์๊ฐ ์๋ค๋๊ฒ ์ฅ์ ์ด๋ค.
ํ์ง๋ง ARC์ ์๋ ๊ท์น์ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ๋ฉด ์ธ์คํด์ค์ ํด์ ๊ฐ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ์ ์๋ค.
์ด๋ ๊ฒ ARC๋ ์ปดํ์ผ๊ณผ ๋์์ ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ๋ ์์ ์ ๊ฒฐ์ ํ๋ฏ๋ก,
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๊ฒ ํ๋ ค๋ฉด ๋ช ํํ ํํธ๋ฅผ ์ ๊ณตํด์ผํ๋ค.
์ ๋๋ก ํํธ๋ฅผ ์ฃผ์ง ์์ผ๋ฉด ์์ง ๋ ์ฌ์ฉํด์ผ ํ๋ ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ์์ผ๋ฒ๋ฆด ์๋ ์๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด ์ธ์คํด์ค์ ๊ด๋ จ๋ ํ๋กํผํฐ์ ์ ๊ทผํ๊ฑฐ๋ ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ง ๋ชปํ๋ ์ํฉ์ด ์๊ธธ ์ ์๊ณ ,
์ธ์คํด์ค์ ๊ฐ์ ๋ก ์ ๊ทผํ๋ ค๊ณ ํ๋ค๊ฐ ์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ์ธํด ํ๋กํ๊ทธ๋จ์ ๊ฐ์ ์ข ๋ฃ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
๐ ์ ์ ํ์ง ์๊ฒ ์ธ์คํด์ค๊ฐ ํด์ ๋์ง ์๊ธฐ ์ํด์๋
๋ค๋ฅธ ์ธ์คํด์ค์ ํ๋กํผํฐ๋ ๋ณ์, ์์ ๋ฑ์ด ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๊ณ ์์ด์ผํ๋ค.
๊ทธ๋ฐ ์ํฉ์ ARC๊ฐ ํด๋น ์ธ์คํด์ค๋ฅผ ํด์ ํ์ง ์๊ณ ์ ์งํด์ผ ํ๋ ๋ช ๋ถ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง์ํค๋ ค๋ฉด ์ด๋ ๊ฒ ๋ช ๋ถ์ ARC์ ์ ๊ณตํด์ผํ๋ฉฐ, ์ด๊ฒ ๋ฐ๋ก ์์์ ๋งํ ํํธ๋ฅผ ๋ปํ๋ค.
/* ์ธ์คํด์ค๊ฐ ์ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋์ด์ผ ํ ์ง ์์ธกํ ์ ์๋๋ก ARC์ ์ ์ฉ๋๋ ๋ช ๊ฐ์ง ๊ท์น์ด ์๋ค.
ํฌ๊ฒ ๊ฐํ ์ฐธ์กฐ, ์ฝํ ์ฐธ์กฐ, ๋ฏธ์์ ์ฐธ์กฐ๋ก ๋๋ ์ ์๋๋ฐ,
์ด ๊ท์น๋ค, ๊ทธ๋ฆฌ๊ณ ๊ท์น์ ์ ๋๋ก ์์ง ๋ชปํ์ ๋์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ๋ฐฉ์์ ๋ํด์๋ ๋ค์ ๊ธ์์! ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค. */
์ด๋ก ์ ๊ณต๋ถํ์ผ๋ ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก,,
์กฐ๊ธ ๋ ์๋ฒฝํ ์ดํด๋ฅผ ์ํด ์ฝ๋๋ก ํ์ธํด๋ณด์!
๐ ARC ๋์ ๊ตฌํ
์์์ ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ ๋ฐํ์ผ๋ก, ARC์ ๋์์ ๋ณด์ฌ์ฃผ๋ ์ฝ๋๋ฅผ ๊ฐ๋จํ ์์ฑํด๋ดค๋ค.
(์ค์ํํธ ๊ณต์ ๋ฌธ์ ๊ธฐ๋ฐ)
import Foundation
class ARC_Example {
let message: String
init(message: String) {
self.message = message
print("\(message) is being initialized")
}
deinit {
print("\(message) is being deinitialized")
}
}
// ARC_Example ํด๋์ค ํ์
์ ๊ฐ๋ ๋ ํผ๋ฐ์ค ๋ณ์ 2๊ฐ A, B
var A: ARC_Example?
var B: ARC_Example?
A = ARC_Example(message: "ARC ๋์ ์ฝ๋")
// Prints "ARC ๋์ ์ฝ๋ is being initialized"
B = A
A = nil
B = nil
// Prints "ARC ๋์ ์ฝ๋ is being initialized"
ARC_Example ์ด๋ผ๋ ํด๋์ค๋ฅผ ํ๋ ์ ์ธํ๊ณ ,
ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋์ ํด์ ๋ ๋ print๋ก ๋ก๊ทธ๋ฅผ ์ฐ๊ฒ ๊ตฌํํ๋ค.
ARC_Example ํด๋์ค ํ์ ์ ๊ฐ๋ ๋ ํผ๋ฐ์ค ๋ณ์๋ก ๊ฐ๊ฐ A, B๋ฅผ ์ ์ธํ๊ณ ,
A์ ARC_Example ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๋๋ก ํ ํ B๊ฐ A๋ฅผ ์ฐธ์กฐํ๊ฒ ํ๋ค.
=> A, B ๋ชจ๋ ARC_Example ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๊ณ ,
ARC_Example ์ธ์คํด์ค์ ๋ํ ๋ ํผ๋ฐ์ค ์นด์ดํธ๋ 2๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐจ๋ก๋๋ก ์ฐธ์กฐ๋ฅผ ํด์ ํ๋๋ฐ,
๋จผ์ A์ nil์ ํ ๋นํ์ฌ ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ค. ๋ ํผ๋ฐ์ค ์นด์ดํธ๋ 2์์ 1์ ๊ฐ์์์ผ์ 1์ด ๋๋ค.
๊ทธ ๋ค์์ผ๋ก B์ ์ฐธ์กฐ๋ฅผ ํด์ ํ๋๋ฐ ์ด ๋ ๋ ํผ๋ฐ์ค ์นด์ดํธ๋ 0์ด ๋์ด
ARC๋ ARC_Example ํด๋์ค ์ธ์คํด์ค๋ deinit ๋ฉ์๋๊ฐ ํธ์ถ, ์๋ฉธ๋๋ค.
(ํด๋์ค ์ธ์คํด์ค๊ฐ ๋์ด์ ์ฐธ์กฐํ ํ์๊ฐ ์์ด์ ธ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ ๊ณผ์ ์ ์๋ฉธ์ด๋ผ๊ณ ํ๋ค.
ํด๋์ค ๋ด๋ถ์ deinit ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ๋ฉด ์๋ฉธ๋๊ธฐ ์ง์ deinit ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค.
๋์ด๋์ ๋ผ์ด์ ๋ ํด๋์ค๋น ํ๋๋ง ๊ตฌํ ๊ฐ๋ฅํ๋ฉฐ ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ ๊ฐ์ง์ง ์๋๋ค.)
์์ ์คํ ๊ฒฐ๊ณผ ๋ก๊ทธ๋ ์๋์ ๊ฐ๋ค.
๐ ์ ๋ฆฌ
ARC๋ retain, release๋ฅผ ํตํด ์ ์ ํ ๋์ retain count์ ์ฆ๊ฐ์
์๋์ผ๋ก ์ํํด์ค์ผ๋ก์จ ๋ ํธ๋ฆฌํ๊ณ ํจ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ด๋ฆฌ๋ฅผ ์ํํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
+ ์ถ๊ฐ!
Retain Cycle, ๊ฐํ์ฐธ์กฐ, ์ฝํ์ฐธ์กฐ, ๊ทธ๋ฆฌ๊ณ ๋ฏธ์์ ์ฐธ์กฐ์ ๋ํด์๋ ๋ค์ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ฉ
2021.10.04 - [๐ Swift Note/๐ ๊ฐ๋ ์ ๋ฆฌ] - [Swift] ARC (2); ๋ฉ๋ชจ๋ฆฌ ๋์, Retain Cycle
์ฐธ๊ณ
- ๐ ์ค์ํํธ ํ๋ก๊ทธ๋๋ฐ
- https://thoonk.tistory.com/62?category=901054
- https://onelife2live.tistory.com/10
- https://mildwhale.tistory.com/27
- https://sujinnaljin.medium.com/ios-arc-%EB%BF%8C%EC%8B%9C%EA%B8%B0-9b3e5dc23814
- https://jusung.gitbook.io/the-swift-language-guide/language-guide/23-automatic-reference-counting
'3๏ธโฃ Swift > Swift ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ARC (2); ๋ฉ๋ชจ๋ฆฌ ๋์, Retain Cycle (0) | 2021.10.04 |
---|---|
[Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (3); ํ์ ํ๋กํผํฐ (2) | 2021.09.22 |
[Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (2); ์ฐ์ฐ ํ๋กํผํฐ (0) | 2021.09.22 |
[Swift] ํ๋กํผํฐ ๊ฐ๋ ์ ๋ฆฌ (1); ์ ์ฅ ํ๋กํผํฐ (0) | 2021.09.22 |
[Swift] ํด๋ก์ ๋ฅผ ์ฌ์ฉํ๋ ์ด์ , ๊ฐ ์บก์ณ(Capturing Value) (0) | 2021.09.11 |
๋๊ธ