๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŽ iOS/Swift

(13)
[Swift] ์Šค์œ„ํ”„ํŠธ ๋ฐ์ดํ„ฐ ํƒ€์ž…(Swift data type) - 1.๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…, Any, AnyObject, nil, Typealias ๐Ÿ’ก Swift ๋ฐ์ดํ„ฐ ํƒ€์ž… ํŠน์ง• - ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์ด๋ฆ„์€ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž…๋ ฅํ•œ๋‹ค. - ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…(Int, Float, Double, Bool, String, Array, Dictionary, Set ๋“ฑ)์€ ๋ชจ๋‘ Struct (๊ตฌ์กฐ์ฒด)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. (์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ Int ๋ผ๊ณ  ์ž…๋ ฅํ•ด์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Swift์— ๋ฏธ๋ฆฌ ๊ตฌ์กฐ์ฒด ๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋Š” ์˜๋ฏธ) Reference Type : class, function, closure ๋“ฑ - ์Šค์œ„ํ”„ํŠธ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… ์—„๊ฒฉํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์•”์‹œ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ณ€ํ˜•์œผ๋กœ๋ถ€ํ„ฐ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค. 1. Swift ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž… ..
[Swift] ํด๋กœ์ €(Closure) vs ๋ธ”๋ก(Block) ํ•จ์ˆ˜ ์บก์ณ๋ฐฉ์‹ ๋น„๊ต ํด๋กœ์ €(Closure) vs ๋ธ”๋ก(Block) ํ•จ์ˆ˜๋ฅผ ๋น„๊ตํ•ด๋ณด์ž Swift์˜ Closure์™€ Objective-C์˜ ๋ธ”๋กํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜๋กœ ๊ฐœ๋…์ด ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‘˜์€ ๊ฐ’์„ ์บก์ณํ•˜๋Š” ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ญ '๊ฐ’์„ ์บก์ณํ•œ๋‹ค'์˜ ์˜๋ฏธ๋ถ€ํ„ฐ ๋‘˜์˜ ์ฐจ์ด์ ์„ ๋น„๊ตํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. Capturing Values: ํด๋กœ์ € ์บก์ณ๋ž€? ๋จผ์ € ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, closure๋Š” ๋‚ด๋ถ€์—์„œ ์™ธ๋ถ€ ๋ณ€์ˆ˜์ธ runningTotal, amount ๋ผ๋Š” Value ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, runningTotal, amount์˜ ๊ฐ’์ด ์บก์ณ๋˜์—ˆ๋‹ค ๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— message๋ž€ ๋ณ€์ˆ˜๋Š” closure ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์บก์ณ๋˜์ง€ ์•Š์Šต..
[Swift] ํด๋กœ์ ธ(Closure) ๊ธฐ๋ณธ ํด๋กœ์ €(Closure) ๋ž€? - ํด๋กœ์ €(Closure)๋ž€ ์ฝ”๋“œ์—์„œ ์ „๋‹ฌ๋˜๊ณ  ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด์ ์ธ(self-contained) ํ•จ์ˆ˜ ๋ธ”๋ก - ์Šค์œ„ํ”„ํŠธ์—์„œ์˜ ํด๋กœ์ €๋Š” C์™€ Objective-C์—์„œ์˜ ๋ธ”๋ก๊ณผ ์œ ์‚ฌํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๋žŒ๋‹คํ•จ์ˆ˜์™€ ์œ ์‚ฌ - ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฐธ์กฐ ํƒ€์ž…!! - ํด๋กœ์ € ํ‘œํ˜„์€ ์ตœ์ ํ™” ๋˜์–ด์„œ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•, ์ฝ”๋“œ์˜ ๋ช…ํ™•์„ฑ๊ณผ ์˜๋„๋ฅผ ์žƒ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ฌธ๋ฒ•์„ ์ถ•์•ฝํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ๋ฒ•์˜ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต ํด๋กœ์ €(Closure) ํ•จ์ˆ˜ ํ˜•ํƒœ (Closure Expression Syntax) { (๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก) -> ๋ฐ˜ํ™˜ํƒ€์ž… in ์‹คํ–‰ ์ฝ”๋“œ } ์˜ˆ๋ฌธ) sorted(by: )๋ฉ”์†Œ๋“œ์™€ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์ •๋ฆฌํ•˜๊ธฐ. reversedNames = names.sorted(b..
[Swift] String(describing:) ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ํด๋ž˜์Šค ์ด๋ฆ„ ์–ป๊ธฐ String(describing:) ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜์—ฌ float String, ํ˜„์žฌ ํด๋ž˜์Šค ์ด๋ฆ„ ๋ฐ›๊ธฐ Declaration init(describing instance: Subject) Swift์—์„œ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ String( )์œผ๋กœ ํŠน์ • ๊ฐ’์„ ๊ฐ์‹ธ์„œ ๋ฌธ์ž์—ด(String)๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Swift์˜ ๊ธฐ๋ณธ ํƒ€์ž…๋“ค์€ ๋ชจ๋‘ ์ด ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, (์‚ฌ์‹ค ์ธํ„ฐํด๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•œ ํƒ€์ž…๋“ค์€ ๋‹ค ๋œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.) ๊ทธ ์™ธ์— ์ด๋ฅผ ํ†ตํ•œ ์ง๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํƒ€์ž…๋“ค์€ String(describing:)์„ ์ด์šฉํ•ด์„œ ๋ณ€ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. Float -> String let stringValue = String(describing: floatValue) ๋ฐ˜๋Œ€๋กœ String -> Float let floatValue = CGFl..
[Swift] 1. ๋ช…๋ช…๋ฒ•, ์ฝ˜์†” ๋กœ๊ทธ, ๋ฌธ์ž์—ด ๋ณด๊ฐ„๋ฒ• 1. ๋ช…๋ช…๋ฒ• Swift์—์„œ๋Š” ์ด๋ฆ„์„ ์ง€์„ ๋•Œ ์นด๋ฉœ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ชจ๋“  ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. Lower Camel Case(์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘) : fuction, method, variable, constant ex) viewDidLoad, userTable ๋“ฑ Upper Camel Case(๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘) : type(class, struct, enum, extension…) ex) Person, Point, Week ๋“ฑ 2. ์ฝ˜์†”๋กœ๊ทธ print ํ•จ์ˆ˜ : ๋‹จ์ˆœ ๋ฌธ์ž์—ด ์ถœ๋ ฅ dump ํ•จ์ˆ˜ : ์ธ์Šคํ„ด์Šค์˜ ์ž์„ธํ•œ ์„ค๋ช…(description ํ”„๋กœํผํ‹ฐ)๊นŒ์ง€ ์ถœ๋ ฅ class Person { var name: String = "TechYeon" var age: Int = 10 } let techYeon: Person..

๋ฐ˜์‘ํ˜•