Deep_Lee
article thumbnail
[Swift ๊ธฐ์ดˆ] ์ œ๋„ค๋ฆญ ( Generic )

์ œ๋„ค๋ฆญ ์ œ๋„ค๋ฆญ์ด๋ž€ ? ํƒ€์ž…์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๋ฒ”์šฉ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉํ•œ๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต์„ ํ”ผํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Apple์— ์˜ํ•˜๋ฉด Swift์—์„œ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋Œ€๋‹ค์ˆ˜๋Š” ์ œ๋„ค๋ฆญ์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Array, Dictionary ๋˜ํ•œ ์ œ๋„ค๋ฆญํƒ€์ž…์ด๋‹ค. ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜ ๋‘๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์•„ Intํƒ€์ž…์˜ ๊ฐ’์„ swapํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด, func swapTwoInts(_ a: inout Int, _ b: inout Int) { let tempA = a a = b b = tempA } ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ชจ๋‘ Intํ˜• ์ผ๊ฒฝ์šฐ์—” ์ž˜ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ์— ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์ด Double, String์ผ ๊ฒฝ์šฐ์—”..

article thumbnail
[iOS] ๋นˆ๋ฒˆํ•œ ์•ฑ ์‹ฌ์‚ฌ ๋ฆฌ์  ์‚ฌ์œ 

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” iOS ์•ฑ ์‹ฌ์‚ฌ ๋ฆฌ์  ์‚ฌ์œ  1. ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ ์šฉ ์‹œ ์• ํ”Œ ๋กœ๊ทธ์ธ ์ ์šฉ ์นด์นด์˜ค ๋กœ๊ทธ์ธ๊ฐ™์€ SNS ๋กœ๊ทธ์ธ๊ธฐ๋Šฅ์ด ์•ฑ์— ๋“ค์–ด๊ฐ„๋‹ค๋ฉด ์• ํ”Œ ๋กœ๊ทธ์ธ๋„ ๊ฐ™์ด ๊ตฌํ˜„ ํ•  ๊ฒƒ ex) firebase Auth๋กœ ๊ฐ„๋‹จํ•œ ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์‹œ ์• ํ”Œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ํ•„์š” X 2. ํƒ€ ํ”Œ๋žซํผ ๋ฌธ๊ตฌ๋‚˜ ์•„์ด์ฝ˜ ์‚ฌ์šฉ ๊ธˆ์ง€ iOS ์•ฑ์— ๊ตฌ๊ธ€์ด๋ผ๋Š” ๋‹จ์–ด๋‚˜ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์Šคํ† ์–ด ๋“ฑ์˜ ์ปจํ…์ธ ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฆฌ์ ์‚ฌ์œ ๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋ฒคํŠธ ํŒ์—…์œผ๋กœ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ๋งํฌ๋‚˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์ถœ์‹œ ์™„๋ฃŒ ๊ฐ™์€ ๋ฌธ๊ตฌ๋ฅผ ๋„์–ด์ค€๋‹ค๋ฉด ๋ฆฌ์ ์‚ฌ์œ ๋‹ค. 3. ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ, ์•ฑ ๋ฒ„๊ทธ ( ํŠ•๊น€ ) ๊ตฌํ˜„๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด๋„ ๋ฆฌ์ ์‚ฌ์œ ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ ์ดฌ์˜ ๋ฒ„ํŠผ์ด ์žˆ๋Š”๋ฐ ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ์•„๋ฌด ๋ฐ˜์‘์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฆฌ์  ์‚ฌ์œ ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ฑ์ด..

article thumbnail
[iOS] Cell ๊ทธ๋ฆผ์ž + ๋‘ฅ๊ธ€๊ฒŒ ( shadow, cornerRadius )
๐ŸŽ iOS/UIKit 2023. 5. 23. 14:13

๐Ÿ“Œ Shadow & cornerRadius ์ผ๋ฐ˜์ ์œผ๋กœ Shadow๋ž‘ Radius๋ฅผ ๊ฐ™์ดํ•˜๋ฉด ์ ์šฉ์ด ์•ˆ๋˜๋Š”๋ฐ, Cell์€ ์‰ฝ๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. func setUpLayout() { layer.shadowColor = UIColor.black.cgColor layer.shadowOpacity = 0.5 layer.shadowRadius = 10 contentView.layer.cornerRadius = 10 contentView.layer.masksToBounds = true } Cell ์•ˆ์—์„œ Layout ํ•  ๋•Œ ์ด๋ ‡๊ฒŒ Cell์— Shadow๋ฅผ ๋„ฃ๊ณ  corner Radius๋ฅผ ์ ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๐Ÿ’ก CollectionView Cell์— ํ…Œ๋‘๋ฆฌ ๋‘ฅ๊ทผํšจ๊ณผ๋งŒ ์ ์šฉ ๐Ÿ’ก Button์ด๋‚˜ View์˜ ํ…Œ๋‘๋ฆฌ ๋‘ฅ๊ธ€๊ฒŒ l..

article thumbnail
[Swift] Struct์™€ Class์˜ ์ฐจ์ด์ 
๐ŸŽ iOS/Swift 2023. 5. 15. 16:16

โœ… Struct Class ๋น„๊ต iOS๊ฐœ๋ฐœ์ž๋กœ ๋ฉด์ ‘์„ ์ค€๋น„ํ•˜๋‹ค๋ณด๋ฉด Struct์™€ Class์˜ ์ฐจ์ด์ ์ด๋ผ๋Š” ์งˆ๋ฌธ์„ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋จผ์ € ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฐจ์ด์ ์„ ๋ณด์ž๋ฉด, "Struct๋Š” ๊ฐ’ํƒ€์ž…, Class๋Š” ์ฐธ์กฐํƒ€์ž…" ์ •๋„์ด๋‹ค. ์ด ์งˆ๋ฌธ์„ ํ†ตํ•ด ARC๋ฅผ ํ†ตํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์ฐธ์กฐํƒ€์ž…๊ณผ ๊ฐ’ ํƒ€์ž…์˜ ์ฐจ์ด์  ๋“ฑ์„ ํ•จ๊ป˜ ๋‹ตํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™๋‹ค. ์‚ฌ์‹ค Struct์™€ Class์˜ '์ฐจ์ด์ '๋งŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ฌธ๋ฒ•์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ณง์ด๊ณง๋Œ€๋กœ ์™ธ์šฐ๊ณ  ๊ณต๋ถ€ํ•ด๋„ ๋  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด ์งˆ๋ฌธ์ด ๋ฉด์ ‘์—์„œ ์ž์ฃผ ๋‚˜์˜จ๋‹ค๋Š”๊ฒƒ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ๋‹ค๋ฉด, iOS๊ฐœ๋ฐœ์ž์—๊ฒŒ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์งˆ๋ฌธ์ธ์ง€ ์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ฒฐ๊ตญ "๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ์„ฑ๋Šฅ์ด๊ณ , Struct์™€ Cl..

article thumbnail
[iOS] Software ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ทœ์น™

๐Ÿ“Œ Sematic versioning GitHub๋ฅผ ์ฐฝ์—…ํ•˜์‹  ๋ถ„์ด ๊ธฐ์กด Versioning์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋‚˜์˜จ ๊ฒƒ Major . Minor . Patch ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™ 1. ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” Major, Minor, Patch ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•˜๊ณ , Major, Minor, Patch๋Š” ๊ฐ๊ฐ ์ž์—ฐ์ˆ˜์ด๊ณ  ์ ˆ๋Œ€ ์•ž์— 0์ด ๋ถ™์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค. 2. ๊ฐ ๋ฒˆํ˜ธ์˜ ์ˆ˜๋Š” ํ•ญ์ƒ ์ฆ๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. 3. ํŠน์ • ๋ฒ„์ „์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๋‚˜๋ฉด, ๊ทธ ๋ฒ„์ „์˜ ๋‚ด์šฉ์€ ์ ˆ๋Œ€ ๋ณ€๊ฒฝํ•˜์ง€ ๋ง์•„์•ผํ•œ๋‹ค. ๋ณ€๊ฒฝ๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๋ฐฐํฌํ•˜๋„๋ก ํ•œ๋‹ค. 4. Major ๋ฒ„์ „์ด ๋ณ€๊ฒฝ๋  ๋•Œ, Minor, Path๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. 5. Minor ๋ฒ„์ „์ด ๋ณ€๊ฒฝ๋  ๋•Œ, Path๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. Major ๋ฒ„์ „ ์ฆ๊ฐ€ ํ•˜์œ„ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ..

article thumbnail
[์•„ํ‚คํ…์ฒ˜ํŒจํ„ด][iOS] MVC ํŒจํ„ด
๐ŸŽ iOS/Design Pattern 2023. 5. 11. 02:03

๐Ÿ“š MVC ํŒจํ„ด ๋””์ž์ธ ํŒจํ„ด ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํŒจํ„ด Model - View - Controller ๊ตฌ์กฐ์˜ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๐Ÿ’ก ์ผ๋ฐ˜์ ์ธ MVC ํŒจํ„ด - Model ---------- ์•ฑ์˜ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ( ์ฃผ๋กœ struct๋‚˜ class ) - View ----------- ํ™”๋ฉด๊ณผ control๋ฅผ ์Šคํฌ๋ฆฐ์„ ํ†ตํ•ด ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ•  ( ์ฃผ๋กœ UiKit ์ƒ์† ) - Controller ------ View์™€ Model์„ ์ž‡๋Š” ์—ญํ•  ( ์ฃผ๋กœ UiViewController ์ƒ์† ) View์™€ Model์ด ์ง์ ‘์ ์œผ๋กœ ์†Œํ†ตํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ Controller๋ฅผ ํ†ตํ•ด ์†Œํ†ตํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰, View๋Š” Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , Model์„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์ด๋ฅผ Controller๊ฐ€ ์ž‡๋Š”๊ฒƒ ๐Ÿ’ก ์• ํ”Œ์˜ MVC ํŒจํ„ด V..

article thumbnail
[iOS] ๋‘๋ฒˆ์งธ ์•ฑ ์ถœ์‹œ ( *๋ฆฌ์  )

๋‚˜์˜ ๋‘๋ฒˆ์งธ ์•ฑ ์ถœ์‹œ ๊ธฐ๋ก 4.12 ~ 4.27 ( "15์ผ ์ด๋‚ด" ) ๊ธฐํš ๊ทœ์น™ ๊ฐœ๋ฐœ ๊ฐœ๋ฐœ์ด์™ธ์˜ ๊ณผ์ • ์ถœ์‹œ๋ฅผ ๋งˆ์น˜๊ณ  ๋ฆฌ์  ๋А๋‚€์  ๊ธฐํš ์ด๋ฒˆ ์•ฑ์˜ ๊ธฐํš ๋ชฉ์ ๋„ "๋‚˜์˜ ์ƒํ™œ"์—์„œ ๋‚˜์™”๋‹ค. ๋ฐฐ๋‹ฌ์Œ์‹์„ ์‹œํ‚ฌ ๋•Œ ๋ฌด์—‡์„ ์‹œํ‚ฌ์ง€ ๊ณ ๋ฏผ์ด ๋ผ์„œ ์ด๊ฒƒ์ €๊ฒƒ ๋“ค์–ด๊ฐ€๋ณด๊ณ , ์ฐพ์•„๋ณด๋Š” ๊ฒฝํ—˜์€ ๋ˆ„๊ตฌ๋‚˜ ํ–ˆ์„๊ฒƒ์ด๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋ฌด์—‡์„ ๋จน์„์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ์‹œํ•ด์คฌ์œผ๋ฉด ๊ณ ๋ฅผ ์ˆ˜ ์žˆ์„๊ฑฐ๊ฐ™์€๋ฐ, ๊ทธ๋ ‡๋‹ค๊ณ  ์ฐพ์•„๋ณด๊ธฐ์—” ๊ท€์ฐฎ๊ณ .. ์ถ”์ฒœํ•ด์ค„์‚ฌ๋žŒ๋„ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. 1. ์Œ์‹์ด ๋งˆ์Œ์— ์•ˆ๋“ค๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ ๋„˜๊ฒจ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”์—†๋Š” ๊ธฐ๋Šฅ์€ ๋ชจ๋‘ ๋นผ๊ณ  ๋‹จ์ˆœํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ด์•ผํ•œ๋‹ค. 2. ์›ํ•˜๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋“ฑ์žฅํ–ˆ์œผ๋ฉด, ๋”ฐ๋กœ ์•ฑ์„ ๋˜ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 3. ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋Œ€ํ‘œ์ ์ด๊ณ  ๊ธฐ๋ณธ์ ์ธ ์Œ์‹ ๋ฆฌ์ŠคํŠธ๋Š” ์ฃผ์–ด์ง€์ง€๋งŒ, ์‚ฌ์šฉ์ž์˜ ..

article thumbnail
[iOS] ์ฒซ ๋ฒˆ์งธ ์•ฑ ์ถœ์‹œ

๋‚˜์˜ ์ฒซ ์•ฑ ์ถœ์‹œ ๊ธฐ๋ก 2023.02.24 ~ 2023.03.24 ( "1๊ฐœ์›”" ) ๊ธฐํš ๊ทœ์น™ ๊ฐœ๋ฐœ ๊ฐœ๋ฐœ์ด์™ธ์˜ ๊ณผ์ • ์ถœ์‹œ๋ฅผ ๋งˆ์น˜๊ณ  ์‹ค์ œ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์•„์‰ฌ์šด์  ๋А๋‚€์  ๊ธฐํš ์•ฑ์˜ ๊ธฐํš ๋ชฉ์ ์€ "๋‚ด๊ฐ€ ํ•„์š”ํ•ด์„œ, ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ" ์˜€๋‹ค. ์šด๋™์„ ํ•  ๋•Œ ์šด๋™์‹œ๊ฐ„๊ณผ, ์‰ฌ๋Š”์‹œ๊ฐ„ ํ™•์ธ์„ ์œ„ํ•˜์—ฌ ์• ํ”Œ์›Œ์น˜๋ฅผ ์ฐจ๊ณ  ํ•˜๋Š”๋ฐ ์†๋ชฉ์— ์‹œ๊ณ„๋ฅผ ์ฐจ๊ณ  ์žˆ๋‹ค๋Š”๊ฒŒ ์–ด๋А ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์กฐ๊ธˆ ๊ฑธ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฒŒ ๋А๊ปด์ง€๊ณ , ์‰ฌ๋Š”์‹œ๊ฐ„์ด ๋ช‡ ๋ถ„์— ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 1. ๊ธฐ์กด์— ์•„์ดํฐ ๋‚ด์˜ ํƒ€์ž„์›Œ์น˜๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์—ˆ์ง€๋งŒ, ์‰ฌ๋Š” ์‹œ๊ฐ„์ด ์–ธ์ œ ๋๋‚˜๋Š”๊ฑด์ง€ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. -> ์†Œ๋ฆฌ๋กœ ์•Œ๋ฆผ์ด ์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฉ”์ธ ๊ธฐ๋Šฅ์€ 'ํƒ€์ด๋จธ'์ด๊ณ  ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ๋„ฃ๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ™”๋ฉด์„ Tab Bar๋ฅผ ์ด์šฉํ•˜์—ฌ ..