๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“Œ Language/Swift

[Swift] defer๋ž€?

by Fomagran ๐Ÿ’ป 2021. 5. 27.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” 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์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

ํ‰์†Œ์— ์ž์ฃผ ์“ฐ์ง€ ์•Š๋Š” ๊ตฌ๋ฌธ์ด๋ผ์„œ ์ž˜ ๋ชฐ๋ž๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด์„œ ํ™•์‹คํžˆ ์•Œ๊ฒŒ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

ํ˜น์‹œ๋ผ๋„ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๊ฑฐ๋‚˜ ํ‹€๋ฆฐ ์ ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€