ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

ํ”ํžˆ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ๋งŽ์ด ๋“ฃ๋Š” ์กฐ์–ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

"์ข‹์€ iOS๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์„ ๋งŽ์ด ์จ์•ผํ•ด~~"

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•  ๋•Œ๋‚˜ '๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”'์— ๋งŽ์€ ๊ณต์„ ๋“ค์ด๊ณ ๋Š” ํ•˜์ง€๋งŒ,

์‚ฌ์‹ค App๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ๋„ ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”๋Š” ๊ฐ€ํžˆ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

 

์šฐ๋ฆฌ๋Š” ๋Œ€์ฒด๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ๋•Œ '๋™์ ํ• ๋‹น' ์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์‹œ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š”๋ฐ,

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ iOS ๊ฐœ๋ฐœ์—๋„ run-time์— ๋ณ€์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•˜๋Š” lazy๋ผ๋Š” ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค!

 


 

์• ํ”Œ์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ฉด lazy์— ๋Œ€ํ•ด ์ด๋ ‡๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ œ๊ฐ€ ์ดํ•ดํ•œ ๋Œ€๋กœ ์ž์ฒด๋ฒˆ์—ญ ํ•˜์˜€์Šต๋‹ˆ๋‹ค,,)

lazy property๋Š” ์ด property๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ๊นŒ์ง€๋Š”, ์ดˆ๊ธฐ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋Š” property์ž…๋‹ˆ๋‹ค.
์œ ์ €๋Š”, property์•ž์— lazy๋ฅผ ๋ถ™์ž„์œผ๋กœ์จ ์ด property๊ฐ€ lazy property์ž„์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋…ผ๋ฆฌ ์ž์ฒด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ ํ• ๋‹น๊ณผ ๋งค์šฐ ํก์‚ฌํ•˜์ฃ ?

๋˜ํ•œ,

์œ ์ €๋Š”, lazy๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” let(์ƒ์ˆ˜) ์•ž์— lazy๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋“œ์‹œ var(๋ณ€์ˆ˜)๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”!!

์ด๊ฑด ๋ญ,,, ๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ๊ฒ ์ฃ ?

[ํ•ด๋‹น property๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ๋‚œ ์ดํ›„์—, ์ดˆ๊ธฐํ™”๊ฐ€ ๋œ๋‹ค] ๊ฐ€ ์ด lazy์˜ ์ •์˜์ธ๋ฐ, ๋‹น์—ฐํžˆ ์ƒ์ˆ˜๋กœ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค!

 

 

//: Playground - noun: a place where people can play
import UIKit


struct InterviewCandidate {
    var isiOS:Bool?
    
    lazy var iOSResumeDescription: String = {
        return "I am an iOS developer"
    }()
    lazy var androidResumeDescription: String = {
        return "I am an android developer"
    }()
}

var person1 = InterviewCandidate()
person1.isiOS = true

if person1.isiOS! {
    print(person1.iOSResumeDescription)
} else {
    print(person1.androidResumeDescription)

}

์œ„์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด,

isiOS์˜ ๊ฐ’์— ๋”ฐ๋ผ์„œ iOSResumeDescription๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”์ง€ / androidResumeDescription๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ, ๊ฐ property๋Š” ๋ชจ๋‘ lazy var๋กœ ์„ ์–ธ์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค!

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— iOSResumeDescription๊ฐ€ ํ˜ธ์ถœ ๋˜๋Š” ์‹œ์ ์—์„œ๋Š” androidResumeDescription๋Š” ์•„์ง ํ˜ธ์ถœ๋œ ์ ์ด ์—†์œผ๋‹ˆ

androidResumeDescription๊ฐ’์€ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค~!

 

 

+

lazy rules:

1) lazy๋Š” let๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

2) ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    -> ์‚ฌ์‹ค ์ด๊ฒƒ๋„ ๋‹น์—ฐํ•œ ๋ง์ธ๋ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” getter / setter๊ฐ€ ๋ชจ๋‘ ๋™์ž‘ํ•˜๊ณ  ๋‚˜์„œ์•ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ!

3) struct๋‚˜ class์˜ ๋ฉค๋ฒ„๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4) lazy property๋Š” ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— thread unsafe ์ž…๋‹ˆ๋‹ค!

 

 

 

 

 

 

 

 

[์ฐธ๊ณ ์ž๋ฃŒ] : https://abhimuralidharan.medium.com/lazy-var-in-ios-swift-96c75cb8a13a

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๋ฐ˜์‘ํ˜•
๋งํฌ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
Total
Today
Yesterday