๋ชฉ๋กLanguage/Swift (12)

suvera-dev ๐Ÿฅฆ

Swift ) ๊ธฐ์ดˆ ๋ฌธ๋ฒ• 6์ผ์ฐจ - Class ์™€ Struct

์ง€๊ธˆ๊นŒ์ง€๋Š” ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์˜ ์ฐจ์ด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ณ  ๊ทธ๋ƒฅ ViewController๋Š” Class.. Model ๋งŒ๋“ค ๋•Œ๋Š” Struct .. ๋ฅผ ์จ์™”์Šต๋‹ˆ๋‹ค ! ํ•˜์ง€๋งŒ.. ์ด์ œ๋Š” ์กฐ๊ธˆ์ด๋ผ๋„... ์•Œ์•„์•ผ ํ•  ๋•Œ๊ฐ€ ์˜จ ๊ฒƒ ๊ฐ™๋„ค์š” ^_^ ๐Ÿ“Œ Class์™€ Struct์˜ ๊ณตํ†ต์ ์€ ? ๊ฐ’์„ ์ €์žฅํ•  ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์  ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๊ฐ’์—. ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์ ‘๊ทผ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. extension์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Protocol์„ ์ฑ„ํƒํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Class์™€ Struct์˜ ์ฐจ์ด์ ์€ ? ๐ŸŽฏ Class ์ฐธ์กฐ ํƒ€์ž… ARC๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ฐ™์€ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค..

Language/Swift 2022. 2. 10. 03:11
Swift ) Closure

์˜ค๋Š˜์€ ์Šคํ„ฐ๋”” ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ํด๋กœ์ €์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ณต๋ถ€ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค ! ๐ŸŒ€Closure ๋ž€? - ์ผ์ • ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋ธ”๋ก์œผ๋กœ ๋ชจ์•„๋†“์€ ๊ฒƒ - func ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์—ˆ๋˜ ํ•จ์ˆ˜ : named Closure - ์ผ๋ฐ˜์ ์ธ ํด๋กœ์ € : Unnamed Closure๋ฅผ ์ง€์นญ { (Parameters) -> Return Type in ์‹คํ–‰ ๊ตฌ๋ฌธ } ๐ŸŒฟ1๊ธ‰ ๊ฐ์ฒด๋กœ์„œ์˜ ํŠน์ง• - ํด๋กœ์ €๋ฅผ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์— ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์œผ๋กœ ํด๋กœ์ €๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ Closure์˜ ์‚ฌ์šฉ ๋ฐฉ์‹์˜ ์ฐจ์ด : Closure๋Š” ํ•จ์ˆ˜๋ฅผ func ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ์„ ์–ธํ•˜๋Š” ํ˜•ํƒœ๋ฅผ ์ทจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. - ์ผ๋ฐ˜์ ..

Language/Swift 2022. 2. 9. 01:41
Swift ) @discardableResult ๋ž€?

์˜ค๋Š˜์€ @discardableResult ๋ผ๋Š” ์นœ๊ตฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ! ์ œ๊ฐ€ ํ•˜๊ณ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ์— ์“ฐ์ด๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ €๋„ ๊ถ๊ธˆํ•ด์ ธ์„œ ๊ฐ€์ ธ์™€๋ดค์Šต๋‹ˆ๋‹ค ! ๐ŸŒ€ @discardableResult - ์˜๋ฏธ: ๊ฒฐ๊ณผ๊ฐ’์„ discardable ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋ผ๋Š” ์˜๋ฏธ - ํ•จ์ˆ˜์˜ return๊ฐ’์„ discadable ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค -> return ๊ฐ’์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ warning ๋ฉ”์„ธ์ง€๋ฅผ ๋‚˜์˜ค์ง€ ์•Š๋„๋ก ์„ค์ • ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ Warning์„ ๋ณด๊ฒŒ๋˜๋Š”๋ฐ์š” ! ใ…Žใ…Ž ๊ทธ์ค‘์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด Result of call to '์–ด์ฉŒ๊ตฌ' is unused ๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ณธ์ ์ด ์žˆ์„ ๊ฑฐ์—์š” ! ๊ฒฐ๊ณผ๋ฅผ return ํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๊ฐ’์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์— ๋œจ๋Š” ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค ! ๊ทธ๋ ‡์ง€๋งŒ.. ! ..

Language/Swift 2022. 2. 8. 10:37
Swift ) ๊ธฐ์ดˆ ๋ฌธ๋ฒ• 5์ผ์ฐจ - UnWrap ์˜ต์…”๋„ ๋ณ€์ˆ˜

๐ŸŒ€ Optional ์ด๋ž€ ? - ํƒ€์ž…์— ๊ฐ’์ด ์žˆ์„์ˆ˜๋„ ์—†์„์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ  ํƒ€์ž…๋’ค์— ?๋ฅผ ๋ถ™์—ฌ์„œ Optional ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ณ€์ˆ˜์˜ ๊ฐ’์ด nil ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ Optional ๋ณ€์ˆ˜๋“ค์€ ๊ฐ’์ด Optional("—-") ํ˜•์‹์œผ๋กœ ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— value ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” unwrapping์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. unwrapํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋จผ์ € Force unwrapping์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’ ๋’ค์— !๋ฅผ ๋ถ™์ด๋ฉด ๋˜๋Š”๋ฐ ์ด๋•Œ value๊ฐ€ nil์ธ ๊ฒฝ์šฐ์— force unwrapping์„ ์‹œ๋„ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๐ŸŒ€ Optional ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ? Optinal ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ Optional Binding ๊ณผ Optinal Chaini..

Language/Swift 2022. 2. 7. 06:20