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

๐Ÿ“ฑ Mobile/iOS

(24)
[iOS - Swift] Class(ํด๋ž˜์Šค)์™€ Struct(๊ตฌ์กฐ์ฒด)์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ - ์ฐธ์กฐ ํƒ€์ž…, ๊ฐ’ ํƒ€์ž… Swift ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ๊ฒƒ๋“ค ์ค‘ ํ•˜๋‚˜์ธ Class(ํด๋ž˜์Šค)์™€ Struct(๊ตฌ์กฐ์ฒด)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด๋Š” Swift ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋งŒํผ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜ ์ด ๊ฐœ๋…๋“ค์— ๋Œ€ํ•ด ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณผ๊ฒƒ์ด๋‹ค. ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์˜ ์ฐจ์ด์  ํด๋ž˜์Šค๋Š” ์ฐธ์กฐ ํƒ€์ž…, ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ’ ํƒ€์ž…์ด๋‹ค. ์ฐธ์กฐ ํƒ€์ž… : reference type ๊ฐ’ ํƒ€์ž… : value type ์ฒ˜์Œ์—๋Š” ๋„๋Œ€์ฒด ์ฐธ์กฐ๊ฐ€ ๋ญ๊ณ  ๊ฐ’์ด ๋ญ์•ผ? ๋ญ๊ฐ€ ๋‹ฌ๋ผ?๐Ÿค” ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹น์—ฐํžˆ ๋‚˜๋„ ๊ทธ๋žฌ๋‹ค. C์–ธ์–ด์—์„œ์˜ ํฌ์ธํ„ฐ๋ฅผ ์•Œ๋ฉด ์กฐ๊ธˆ ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค. ์ผ๋‹จ ์ฐธ์กฐ ํƒ€์ž…๊ณผ ๊ฐ’ ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋Š” ๋ฐ‘์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. ํด๋ž˜์Šค (Class) ์ฐธ์กฐ ํƒ€์ž… (reference ty..
[iOS - Swift] Auto Layout Constraint์˜ Priority์— ๋Œ€ํ•ด์„œ Auto Layout์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. Apple ์ œํ’ˆ๋“ค๋งŒ ๋ด๋„, ์•„์ดํฐ๋„ ๊ธฐ์ข… ๋ณ„๋กœ ๋‹ค์–‘ํ•œ ํ™”๋ฉด์˜ ํฌ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ์•„์ดํŒจ๋“œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์— Auto Layout์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค ๋ฐ ํ™”๋ฉด ํฌ๊ธฐ์—์„œ ์ผ๊ด€๋œ ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šค์œ„ํ”„ํŠธ์—์„œ Auto Layout์„ ๋‹ค๋ฃฐ ๋•Œ Constraint์˜ ์šฐ์„ ์ˆœ์œ„(Priority)๋Š” ํ•ด๋‹น ์ œ์•ฝ์กฐ๊ฑด์ด ๋‹ค๋ฅธ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ ์šฉ๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š” ์ œ์•ฝ์กฐ๊ฑด๋“ค ์‚ฌ์ด์˜ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์›ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๋Ÿฌ ์ œ์•ฝ์กฐ๊ฑด์ด ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ์ œ์•ฝ์กฐ๊ฑด์„ ๋” ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธธ ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋” ๋‚ฎ..
[iOS - Swift] Any, AnyObject์˜ ์ฐจ์ด์ ์€? Swift๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋“ค์ด ์žˆ๋‹ค. ๋ณดํ†ต ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด C, Python, Java์—์„œ ์“ฐ์ด๋Š” Int, Double, Float, String, Bool, Array๋“ฑ ์ •๋ง ๋งŽ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ฒ˜์Œ Swift๋ฅผ ๊ณต๋ถ€ํ•  ๋•Œ ๋‚ฏ์„  ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์žˆ์—ˆ๋‹ค. ๋ฐ”๋กœ Any์™€ AnyObject ์ด๋‹ค. Python์—์„œ๋Š” object ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜๊ณ  C#์—์„œ๋„ object ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜๋‹ค. ์˜ค๋Š˜์€ Swift์—์„œ์˜ Any์™€ AnyObject์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค. Any ์Šค์œ„ํ”„ํŠธ์˜ ๋ชจ๋“  ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ผ๋ฐ˜์ ์ธ ํƒ€์ž…์ด๋‹ค. ๋ชจ๋“  ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. AnyObject ๋ชจ๋“  ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. AnyObject๋Š” ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ 'ํ”„๋กœํ† ์ฝœ' ์ด๋‹ค. ์Šค์œ„ํ”„ํŠธ์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š”..
[iOS - Swift] Singleton Pattern ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€? Singleton Pattern ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ํŠน์ • ์šฉ๋„๋กœ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด์„œ ๊ณต๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ์œ ํ˜•์ด๋‹ค. ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ๋ณด์žฅํ•˜๊ณ  ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋””์„œ๋“  ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค. ์ฆ‰, ์•ฑ ์ „๋ฐ˜์—์„œ ๊ณต์œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•ด์ง„๋‹ค. Singleton Pattern ์˜ ํŠน์ง• 1. ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค 2. ์ „์—ญ์  ์ ‘๊ทผ์„ 3. ์ง€์—ฐ ์ดˆ๊ธฐํ™” 4. ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ํŠน์ง•์ด ์ž˜ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ๋‹ค. Singleton Pattern ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ class StudentInfo { var id : String? var grade : Int? var name : String? } ํ•™์ƒ์˜ id์™€..
[iOS - Swift] ์˜ต์…”๋„(Optional)์— ๋Œ€ํ•˜์—ฌ, ์˜ต์…”๋„ ์ถ”์ถœ, ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ(Optional Binding), ์˜ต์…”๋„ ์ฒด์ด๋‹(Optional Chaining) ์˜ต์…”๋„(Optional) ์ด๋ž€? ์˜ต์…”๋„์ด๋ž€ ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์—†์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๊ฐ’์ด null ์ธ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. ํ•˜์ง€๋งŒ, swift์—์„œ๋Š” ์˜ต์…”๋„์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์ด ์—†๋Š” ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•ด๋„ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค. ์˜ต์…”๋„(Optional) ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๊ฐ’์ด ์—†๋Š” ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ํ˜น์€, ‘์“ฐ๋ ˆ๊ธฐ ๊ฐ’’์ด ์ €์žฅ๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ๋‹ค. var name : String print(name) ์œ„์˜ ์˜ˆ์‹œ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ์™œ๋ƒ๋ฉด name์—๋Š” ์•„๋ฌด๋Ÿฐ ๊ฐ’์ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿผ ์•ฑ์ด ๊บผ์ง€์ง€ ์•Š๊ฒŒ ..
[iOS - Swift] is, as ํƒ€์ž… ์บ์ŠคํŒ… (์—… ์บ์ŠคํŒ…, ๋‹ค์šด ์บ์ŠคํŒ…) ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด is, as, as!, as? ์™€ ๊ฐ™์ด ๊ฐ™์€ ๋“ฏ ๋‹ค๋ฅธ ๋ฌธ๋ฒ•์„ ๋ณธ ์ ์ด ์žˆ์„๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฑธ ํƒ€์ž… ์บ์ŠคํŒ… ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์–ด๋–ค ๊ฒƒ๋“ค์ด ๋‹ค๋ฅธ์ง€ ์ •ํ™•ํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํƒ€์ž… ์บ์ŠคํŒ… (Type Casting) ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ™์€ ๊ณ„์ธต์— ์žˆ๋Š” ๋‹ค๋ฅธ ์Šˆํผ ํด๋ž˜์Šค(์ƒ์œ„)๋‚˜ ์„œ๋ธŒ ํด๋ž˜์Šค(ํ•˜์œ„)๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•˜๋‹ค. ํƒ€์ž… ์บ์ŠคํŒ…์€ is ์™€ as ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. is ์—ฐ์‚ฐ์ž ํŠน์ • ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…์„ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ๋ฐ˜ํ™˜ ํƒ€์ž…์€ Bool์ด๋‹ค. let mystr : String = "Kimgahyun" mystr is Character // false mystr is String ..

728x90