์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค!
์ค๋ ์์๋ณผ๊ฑด defer๋ฌธ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
๋ฐ๋ก ์์ํ ๊ฒ์~
defer๋?
์ฝ๋ ๋ธ๋ก์ด ๋๋๊ธฐ ์ ์ ์คํ๋๋ ์ฝ๋์ ๋๋ค.
์์๋ฅผ ํตํด์ ๊ฐ๋จํ ์์๋ณด๊ฒ ์ต๋๋ค.
iOS๊ฐ๋ฐ์ ํ๊ณ ์๋ ์ฌ๋์ด ์ฝ๋ฉ์ด ๋๋ ํ์ ๋ฐ๋์ ์ปค๋ฐ์ ํ๋ ค๊ณ ํ๋ ์ํฉ์ ๋๋ค.
์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด defer๋ฌธ์ ๊ฐ์ฅ ๋จผ์ ์คํํ์์๋ ๊ฐ์ฅ ๋ง์ง๋ง์ "์ปค๋ฐํ๊ธฐ"๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
func ์ฝ๋ฉํ๊ธฐ() {
defer {
print("์ปค๋ฐํ๊ธฐ")
}
print("์ปดํฐ์ผ๊ธฐ")
print("Xcode ์ผ๊ธฐ")
print("์ฝ๋ ์์ฑ")
print("์ฝ๋ฉ ๋")
}
์ฝ๋ฉํ๊ธฐ()
//์ปดํฐ์ผ๊ธฐ
//Xcode ์ผ๊ธฐ
//์ฝ๋ ์์ฑ
//์ฝ๋ฉ ๋
//์ปค๋ฐํ๊ธฐ
๋ง์ฝ defer๋ฌธ์ด ํ ๋ธ๋ก์ ์ฌ๋ฌ๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๐ค
๋จผ์ ์ฐ์ฌ์ง defer๋ฌธ์ด ๋ฐ๋๋ก ๋ ๋ฆ๊ฒ ์คํ๋ฉ๋๋ค.
์๋ ์ฝ๋๋๋ก ์ถ๋ ฅ์ ํ๋ฉด "์ปดํฐ ๋๊ธฐ"๊ฐ "์ปค๋ฐํ๊ธฐ"๋ณด๋ค ๋จผ์ ์ฐ์ฌ์ก์ผ๋ฏ๋ก "์ปค๋ฐํ๊ธฐ" ๋ค์์ผ๋ก "์ปดํฐ ๋๊ธฐ"๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
func ์ฝ๋ฉํ๊ธฐ() {
defer {
print("์ปดํฐ ๋๊ธฐ")
}
defer {
print("์ปค๋ฐํ๊ธฐ")
}
print("์ปดํฐ์ผ๊ธฐ")
print("Xcode ์ผ๊ธฐ")
print("์ฝ๋ ์์ฑ")
print("์ฝ๋ฉ ๋")
}
์ฝ๋ฉํ๊ธฐ()
//์ปดํฐ์ผ๊ธฐ
//Xcode ์ผ๊ธฐ
//์ฝ๋ ์์ฑ
//์ฝ๋ฉ ๋
//์ปค๋ฐํ๊ธฐ
//์ปดํฐ ๋๊ธฐ
ํ์ง๋ง defer๋ฌธ์ด ๋ฌด์กฐ๊ฑด ์คํ๋๋ ๊ฒ์ ์๋๋๋ค.
๋ง์ฝ ์ปค๋ฐ์ ํ๋ ค๊ณ ํ๋๋ฐ ๊น์ ์๋ฌ๊ฐ ์๊ฒจ ์ปค๋ฐ์ ๋ชปํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๋ค๋ฅธ ์ฝ๋์ ๋๊ฐ์ด ์๋ฌ๊ฐ ์๊ธฐ๊ธฐ ์ ์ฝ๋๋ง ์คํ๋๊ณ ๊ทธ ํ์ ์๋ defer๋ฌธ์ ์คํ๋์ง ์์ต๋๋ค.
func ์ฝ๋ฉํ๊ธฐ() throws -> Void {
defer {
print("์ปดํฐ ๋๊ธฐ")
}
if true {
enum ์๋ฌ:Error {
case ๊น์๋ฌ
}
throw ์๋ฌ.๊น์๋ฌ
}
defer {
print("์ปค๋ฐํ๊ธฐ")
}
print("์ปดํฐ์ผ๊ธฐ")
print("Xcode ์ผ๊ธฐ")
print("์ฝ๋ ์์ฑ")
print("์ฝ๋ฉ ๋")
}
try ์ฝ๋ฉํ๊ธฐ()
//์ปดํฐ ๋๊ธฐ
//์๋ฌ.๊น์๋ฌ
์ค๋์ ์ด๋ ๊ฒ defer์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
ํ์์ ์์ฃผ ์ฐ์ง ์๋ ๊ตฌ๋ฌธ์ด๋ผ์ ์ ๋ชฐ๋๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด์ ํ์คํ ์๊ฒ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํน์๋ผ๋ ๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋ ํ๋ฆฐ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
'๐ Language > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Subscript๋? (0) | 2021.11.16 |
---|---|
[RxCocoa] bind๋? (0) | 2021.07.05 |
[Swift] ํด๋ก์ ธ๋ ์ ์ฐธ์กฐํ์ ์ผ๊น?(Why closure is reference type?) (0) | 2021.05.27 |
[Swift] Enum์ด๋?(feat. ์จ์ผํ๋ ์ด์ ) (0) | 2021.04.28 |
[RxSwift] Combining Observables ์์๋ณด๊ธฐ (Combine Latest,Zip, Merge,Concat,withLatestFrom) (0) | 2021.04.07 |
๋๊ธ