๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

์†์„ฑ๊ฐ์‹œ์ž [ Swift ] ์†์„ฑ ๊ฐ์‹œ์ž(Property Observers) ์†์„ฑ ๊ฐ์‹œ์ž(Property Observers)๋ž€? ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ์†์„ฑ(property)์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœ์ด ๋œ๋‹ค. var myProperty: Int = 20 { didSet{ // ๋ณ€๊ฒฝ๋œ ์งํ›„์— ํ˜ธ์ถœ // oldValue๊ฐ’ ํ˜ธ์ถœ๊ฐ€๋Šฅ } willSet{ // ๋ณ€๊ฒฝ๋˜๊ธฐ ์ง jihae-qu.tistory.com ์†์„ฑ๊ฐ์‹œ์ž, ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋Š” ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋ณ€ํ•จ์„ ๊ด€์ฐฐํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋ณ€ํ•จ์„ ๊ด€์ฐฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ var ๋งŒ ์„ ์–ธ์ด ๋˜๊ฒ ์ฃ ? ๊ฐ’์ด ๋ณ€ํ™”๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” willSet ๊ณผ ๊ฐ’์ด ๋ณ€ํ™”๋˜๊ณ  ๋‚œ ํ›„์— ํ˜ธ์ถœ๋˜๋Š” didSet ์ด ์žˆ์Šต๋‹ˆ๋‹ค. didSet ์€ oldValue ๊ฐ’์„ ํ˜ธ์ถœํ•˜๊ณ , willSe..
์ ‘๊ทผ์ œ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ์ ‘๊ทผ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์• ํ”Œ์ด ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ์ถœ ์ˆ˜ ์žˆ์Œ. ์ฝ”๋“œ์˜ ์˜์—ญ์„ ๋ถ„๋ฆฌ์‹œ์ผœ์„œ, ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๊ฐ์†Œ ์ปดํŒŒ์ผ๋Ÿฌ ์ž…์žฅ์—์„œ๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์–ด๋Š ๋ฒ”์œ„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋” ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. class Student { private var _name: String = "ํ™๊ธธ๋™" func setName(_ name: String) { self._name = name } } var student = Student() // student._name // ๐Ÿšจ error: Value of type 'Student' has no member 'name' // student._name = "EarthSea" // ๐Ÿšจ error: Value of type..
์†์„ฑ ๊ฐ์‹œ์ž(Property Observers)๋ž€? ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ์†์„ฑ(property)์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœ์ด ๋œ๋‹ค. var myProperty: Int = 20 { didSet{ // ๋ณ€๊ฒฝ๋œ ์งํ›„์— ํ˜ธ์ถœ // oldValue๊ฐ’ ํ˜ธ์ถœ๊ฐ€๋Šฅ } willSet{ // ๋ณ€๊ฒฝ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ // newValue๊ฐ’ ํ˜ธ์ถœ๊ฐ€๋Šฅ } } didSet - ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ์ง ํ›„์— ํ˜ธ์ถœ๋˜๊ณ , ๋ณ€ํ•˜๊ธฐ ์ „์˜ ๊ฐ’์ด oldValue๋กœ ์ž๋™ ์ €์žฅ๋จ. willSet - ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ์ง์ „์— ํ˜ธ์ถœ๋˜๊ณ , ๋ณ€ํ•œ ํ›„์˜ ๊ฐ’์ด newValue๋กœ ์ž๋™ ์ €์žฅ ์ €์žฅ์†์„ฑ์€ var๋กœ๋งŒ ์„ ์–ธ์ด ๊ฐ€๋Šฅ let์€ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ด€์ฐฐํ•  ํ•„์š”๊ฐ€ ์—†์Œ. ์ง€์—ฐ ์ €์žฅ ์†์„ฑ์€ ๊ด€์ฐฐ์ด ๋ถˆ๊ฐ€๋Šฅ ์ž๋ฃŒํ˜•์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜ ๋ณ€์ˆ˜์™€ ๋™์ผ ์ €์žฅ ์†์„ฑ์˜ ๋ณ€ํ™” ์‹œ์ ..
๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด โœ๐Ÿป Github ๋ฌธ์ œ ํ’€์ด github ๋งํฌ ๋ฌธ์ œ ์„ค๋ช… ๋ฌธ์ž์—ด s๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ฒซ ๊ธ€์ž๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ž๋ฅผ x๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค. ์ด์ œ ์ด ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฝ์–ด๋‚˜๊ฐ€๋ฉด์„œ, x์™€ x๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ธ€์ž๋“ค์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์…‰๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถ”๊ณ , ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. s์—์„œ ๋ถ„๋ฆฌํ•œ ๋ฌธ์ž์—ด์„ ๋นผ๊ณ  ๋‚จ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๋ถ€๋ถ„์ด ์—†๋‹ค๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‘ ํšŸ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ๋” ์ด์ƒ ์ฝ์„ ๊ธ€์ž๊ฐ€ ์—†๋‹ค๋ฉด, ์—ญ์‹œ ์ง€๊ธˆ๊นŒ์ง€ ์ฝ์€ ๋ฌธ์ž์—ด์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์œ„ ๊ณผ์ •๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋“ค๋กœ ๋ถ„ํ•ดํ•˜..
์˜ค๋Š˜์€ ์–ด์ œ๋ถ€ํ„ฐ ์‹œ๋„ํ•œ ๋ธ”๋กœ๊ทธ ์Šคํ‚จ์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ๊ตญ ์‹คํŒจํ•˜์˜€์Šต๋‹ˆ๋‹ค^_^ ํ‹ฐ์Šคํ† ๋ฆฌ๋กœ ๋„˜์–ด์˜จ ์ดํ›„๋ถ€ํ„ฐ ํ•˜๋ฃจ์— ํ•˜๋‚˜์”ฉ ๋ธ”๊พธํ•˜๋Š”๊ฒŒ ๋„ˆ๋ฌด ์ข‹์•„์ ธ๋ฒ„๋ ธ์–ด์š”..!!! ๋ณผ๋•Œ๋งˆ๋‹ค ๋„˜๋‚˜ ๋ฟŒ๋“ฏํ•˜๊ณ , CSS ๊ณต๋ถ€ํ•œ ๊ฒƒ ๊ฐ™๊ณ .. ์˜ˆ์ „์— ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ xml ๊ฑด๋“œ๋ ค๋ณธ ๊ธฐ์–ต๋„ ๋‚˜๊ณ ..ใ…Ž ๊ทผ๋ฐ์š”..? ์ œ๊ฐ€ ๋ธ”๋กœ๊ทธ ์Šคํ‚จ์„ 5๋ฒˆ ๋’ค์—Ž์—ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ์–ด์š”.. ๊ณ„์† ์‹œ๋„ํ•˜๊ณ  ์‹คํŒจํ•˜๊ณ  ๋‹ค์‹œ ๋ฐฑ์—…ํ•ด์„œ ์‹œ๋„ํ•˜๊ณ  ์‹คํŒจํ•˜๊ณ , ๋‹ค์‹œ ๋ฐฑ์—… ์‹œ๋„, ์‹คํŒจ , ์‹œ์‹ค์‹œ์‹ค ์–ดํœด.. ๊ทธ๋งŒ ํฌ๊ธฐํ•  ๋•Œ๋„ ๋๋Š”๋ฐ,, ์ง„์งœ ๋„ˆ๋ฌด ํ•˜๊ณ  ์‹ถ์–ด์„œ ์–ด์ œ ์ƒˆ๋ฒฝ 4์‹œ๊นŒ์ง€ ํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ.. ์ด๋Ÿฌ๋‹ค ๋‚ด์ผ ๊ณต๋ถ€ ๋ชปํ•˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ ์–ผ๋ฅธ ์ž๋Ÿฌ๊ฐ”๋‹ต๋‹ˆ๋‹ค.. ์ œ๊ฐ€ ํ•˜๊ณ  ์‹ถ์€๊ฑด.. ๋”ฑ ์„ธ ๊ฐ€์ง€์—์š”.. ๋ธ”๋กœ๊ทธ ๋ฉ”์ธ ๋กœ๊ณ ์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„ฃ๊ธฐ!! ๋ธ”๋กœ๊ทธ ๊ธ€ ์ƒ๋‹จ์— ๋ฌผ๊ฒฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„ฃ๊ธฐ!..
๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด โœ๐Ÿป Github ๋ฌธ์ œ ํ’€์ด github ๋งํฌ ๋ฌธ์ œ ์„ค๋ช… ์ ์‹ฌ์‹œ๊ฐ„์— ๋„๋‘‘์ด ๋“ค์–ด, ์ผ๋ถ€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ์ด ์ด๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๋Š” ์ฒด๊ฒฉ ์ˆœ์œผ๋กœ ๋งค๊ฒจ์ ธ ์žˆ์–ด, ๋ฐ”๋กœ ์•ž๋ฒˆํ˜ธ์˜ ํ•™์ƒ์ด๋‚˜ ๋ฐ”๋กœ ๋’ท๋ฒˆํ˜ธ์˜ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 4๋ฒˆ ํ•™์ƒ์€ 3๋ฒˆ ํ•™์ƒ์ด๋‚˜ 5๋ฒˆ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒด์œก๋ณต์ด ์—†์œผ๋ฉด ์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒด์œก๋ณต์„ ์ ์ ˆํžˆ ๋นŒ๋ ค ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ•™์ƒ์ด ์ฒด์œก์ˆ˜์—…์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜ n, ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด lost, ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด reserve๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ..
ํƒ€์ž…์บ์ŠคํŒ…์ด๋ž€? : ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ is ์—ฐ์‚ฐ์ž : ํƒ€์ž…์„ ์ฒดํฌํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ Bool ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. var name: String = "EarthSea" print(name is String) print(name is Int) /* ์ถœ๋ ฅ : true false */ var alphabet: Character = "A" print(alphabet is Character) print(alphabet is String) /* ์ถœ๋ ฅ : true false */ var age: Int = 20 print(age is Int) print(age is Double) /* ์ถœ๋ ฅ : true false */ ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ… : ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์Šˆํผํด๋ž˜..
์ €.. ์‚ฌ์‹ค ์˜ค๋Š˜ ๋ธ”๊พธํ–ˆ์–ด์š”..ใ…Žใ…Žใ…Ž ๋‚ด์ผ๋ถ€ํ„ฐ ๋‹ค์‹œ ์—ด์‹ฌํžˆ ๋‹ฌ๋ ค๋ณผ๊ฒŒ์š”..๐Ÿ˜„ Swift ๋ฌธ๋ฒ•์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด๋‹ˆ ๊ถ๊ธˆํ•œ๊ฒŒ ๋งŽ๋”๋ผ๊ตฌ์š”! ( ํŠน๊ฐ•์—์„œ ๋“ค์€ ๋Œ€๋กœ ๋ญ๋“  ๋ฌผ์Œํ‘œ ์—ด์‹ฌํžˆ ์ฐ์–ด๋ณด๋ ค๊ณ  ํ•จ..ใ…‹ใ…‹ ) sort ์™€ sorted์˜ ์ฐจ์ด ์ œ๊ฐ€ sortํ•จ์ˆ˜์™€ sorted ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜๋Š”๋ฐ, ๊ทธ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์žˆ์ง€๋Š” ์•Š์•˜๋”๋ผ๊ตฌ์š”. Sort ์šฐ์„  sort์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž๋ฉด, sort๋Š” List ๋ผ๋Š” ํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. sort ๋ฉ”์„œ๋“œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ None์œผ๋กœ ์—†์–ด์š”! Sorted ๊ทธ๋ ‡๋‹ค๋ฉด sorted๋Š”?!?! sorted๋Š” iterable ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. sorted ๋ฉ”์„œ๋“œ list, tuple, string, ์ฝœ๋ ‰์…˜( ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ, .. ), ... ..
EarthSea
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (12 Page)