Deep_Dev
article thumbnail
[iOS] Clean Build Folder
๐ŸŽ iOS/UIKit 2023. 11. 24. 23:54

๐Ÿ“š ๋นŒ๋“œ ํด๋ฆฐ Clean Build Folder ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ Image ํŒŒ์ผ๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ AppIcon ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. 2๊ฐ€์ง€ ์˜ค๋ฅ˜๊ฐ€ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋œจ๊ธฐ๋„ ํ–ˆ๋Š”๋ฐ, App ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€๋ฅผ ํ”ฝ์…€๋ณ„๋กœ ๋‹ค์šด๋ฐ›์•„์„œ ํด๋” ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€ํ–ˆ์Œ์—๋„ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜์„œ Build Success๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜๋‹ค. AppIcon ๋„ค์ด๋ฐ๋„ ์ž˜๋ชป๋˜์ง€์•Š์•˜์—ˆ๊ณ , 152.png ํŒŒ์ผ๋„ ์ •์ƒ์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋•Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€, ์ด๋ฏธ์ง€๋ฅผ ๊ต์ฒดํ•˜๊ณ  ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ํ–‰์œ„๋ฅผ ํ•˜์ง€๋ง๊ณ  Product - Clean Build Folder ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ Xcoce์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ง€์›ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ, 100% ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›Œ์ง€๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€ ๊ด€๋ จํ•œ ์—๋Ÿฌ..

article thumbnail
[Swift] stride ( for๋ฌธ ์ผ์ • ์ˆซ์ž๋งŒํผ ์ฆ๊ฐ€ )

๐Ÿ“š stride for๋ฌธ ์ผ์ • ์ˆซ์ž๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• stride ๋ฐ˜๋ชฉ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด 1์”ฉ ์ฆ๊ฐ€๊ฐ€ ์•„๋‹Œ 2 ํ˜น์€ 3 ๋“ฑ ์›ํ•˜๋Š” ์ˆซ์ž๋งŒํผ ์ฆ๊ฐ€์‹œ์ผœ์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ๋•Œ, stride๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธํ˜•ํƒœ 2๊ฐ€์ง€ stride(from: , to: , by: ) " 3 6 9 "๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถœ๋ ฅ 12 ์ถœ๋ ฅ X stride(from: , through: , by: ) " 3 6 9 12 "๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถœ๋ ฅ ๐Ÿ’ก ์ฆ‰, to๋Š” to์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„์ด๊ณ , through๋Š” through์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์„ ํฌํ•จํ•œ ๋ฒ”์œ„์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์‹œ ๋ฌธ์ œ https://school.programmers.co.kr/learn/courses/30/lessons/181886 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”..

article thumbnail
[Swift] ReplacingOccurrences ( ๋ฌธ์ž์—ด ์น˜ํ™˜ )

๐Ÿ“š ๋ฌธ์ž์—ด ๋‚ด ํŠน์ •๋ฌธ์ž ๋ณ€๊ฒฝ (์น˜ํ™˜) ReplacingOccurrences ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•˜์—ฌ ์ƒˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. - of target : ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด - with replacement : ๋Œ€์ฒดํ•  ๋ฌธ์ž์—ด ์‚ฌ์šฉ์˜ˆ์‹œ let str = "Bye Nice to meet you" let result = str.replacingOccurrences(of: "Bye", with: "Hello") print(result) // "Hello Nice to meet you" of: ์— ์žˆ๋Š” "Bye"๋ฅผ "Hello"๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

article thumbnail
[Swift] Split , Components

๐Ÿ“š ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ split components Split split๋ฉ”์„œ๋“œ๋Š” ๋‹ค์–‘ํ•œ parameter๋ฅผ ์ง€์›ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. - separater : ์ชผ๊ฐœ๋ ค๋Š” ๋ฌธ์ž ๋‹จ์œ„ - maxSplits : ์ง€์ •ํ•œ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์–ผ๋งˆ๋‚˜ ์ชผ๊ฐค์ง€ - omittingEmptySubsequences : Bool๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’์—์„œ ๋นˆ ์‹œํ€€์Šค์˜ ํฌํ•จ ์œ ๋ฌด๋ฅผ ์„ค์ • ์ฐธ๊ณ  : https://zeddios.tistory.com/232 split์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฌธ์ž์—ด์„ ํŠน์ • ๋ฌธ์ž ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐค ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜ํ™˜ํ˜•์€ Stringํƒ€์ž…์„ [Substring]์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜๋ฐ›๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋“ค์–ด๊ฐ€์žˆ๋‹ค. ๋•Œ๋ฌธ์— ๋ฐ”๋กœ import Foundation์„ ํ•  ํ•„์š”์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. let ..

[Swift] Map, Filter, Reduce

๐Ÿ“š ๊ณ ์ฐจํ•จ์ˆ˜ Map Filter Reduce ๊ณ ์ฐจํ•จ์ˆ˜๋ž€ ? ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜์‹คํ–‰์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ( = ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํ•จ์ˆ˜ ) Map ( ๋ณ€ํ˜• ) ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ˜•๋˜์ง€ ์•Š๋Š”๋‹ค. Map์€ ๊ธฐ์กด์˜ for-in ๊ตฌ๋ฌธ๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ์—†์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์ด ์žˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐ์„ฑ ์žฌ์‚ฌ์šฉ ์šฉ์ด ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” ์„ฑ๋Šฅ ์ข‹์Œ map์˜ ๊ธฐ๋ณธ ํ˜•ํƒœ array.map(transform:T throws -> T) Tํƒ€์ž…์˜ transform์„ ๋ฐ›์•„ ์ƒˆ๋กœ์šด Txใ…์ž…์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค. * ๊ธฐ์กด for - in ๊ตฌ๋ฌธ let numArray = [1,3,5,7,9] var multiArra..

article thumbnail
[Swift][iOS] GCD API ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ•„์š”์„ฑ (1)
๐ŸŽ iOS/Swift 2023. 6. 13. 15:28

๐Ÿ“Œ GCD ( Grand Central Dispatch) ๋ž€? ๋‹ค์ˆ˜์˜ Thread์— ์ ์ ˆํ•˜๊ฒŒ ์ž‘์—…์„ ๋ถ„๋ฐฐํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์•ผ ํ•  ์ผ์€ ๋ฌด์—‡์ผ๊นŒ ? ๋ฐ”๋กœ ํ•  ์ผ(task)๋ฅผ Queue์— ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค. ๋„ฃ์–ด์•ผ ๋˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๋‹ค์ˆ˜์˜ Thread์— ์ ์ ˆํ•˜๊ฒŒ ์ž‘์—…์„ ๋ถ„๋ฐฐํ•˜๋Š” ์ผ์€ ๋ˆ„๊ฐ€ ํ•  ๊ฒƒ์ธ๊ฐ€ ? ๋ฐ”๋กœ GCD๋Š” Queue์— ๋„ฃ์œผ๋ฉด ๊ทธ์— ๋”ฐ๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ƒ์„ฑํ•ด ๋ถ„๋ฐฐํ•ด์ฃผ๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  GCD์—์„œ ์‚ฌ์šฉํ•˜๋Š” Queue ์ด๋ฆ„์ด Dispatch Queue์ด๋‹ค. ๊ทธ๋Ÿผ Dispatch Queue์— ์ž‘์—…์ด ์ถ”๊ฐ€๋˜๋ฉด GCD๋Š” ์ž‘์—…์— ๋งž๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ์‹คํ–‰ํ•˜๊ณ , ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ฒŒ ๋œ๋‹ค. ๐Ÿ“Œ Dispatch Queue๋ž€? ์•ฑ์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋˜๋Š” ๋™์‹œ์— ์ž‘..

article thumbnail
[Swift ๊ธฐ์ดˆ] ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ( POP )

ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ Protocol - Oriented Programming ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์‚ฌ๋ฌผ์„ ๊ฐ์ฒด๋กœ ํ˜•์„ฑํ•˜์—ฌ ๊ณตํ†ต์ ์„ ๊ฐ–๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ƒ์†๋ฐ›๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋กœ์ง์„ ์บก์Šํ™”ํ•œ๋‹ค. ์˜๋„ ํ•˜์ง€ ์•Š์•„๋„ ์ƒ์†ํ–ˆ๋‹ค๋Š” ์ด์œ ๋กœ ๋ชจ๋“  ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ๊ณต์œ ํ•ด์•ผํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์ƒ์† ๊ตฌ์กฐ๋ฅผ ์ง€๋‹Œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ๋‹ค๋ฉด ์›ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•  ๋•Œ ๋‹ค์šด์บ์ŠคํŒ…์„ ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ํฐ ๋‹จ์ ์€ ๋‹จ ํ•˜๋‚˜์˜ SuperClass๋งŒ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์‹œ๊ฐ„์ด ํ๋ฅด๋ฉด ๊ธฐ๋Šฅ๋„ ํ™•์žฅํ•˜๊ธฐ ๋งˆ๋ จ์ด๋ฏ€๋กœ ๋ณต์žก๋„๋„ ๋†’์•„์ง€๊ณ  ๊ด€๋ฆฌ๋„ ์–ด๋ ค์›Œ์ง„๋‹ค. ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ํ”„๋กœํ† ์ฝœ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ๋‹ค์ค‘ ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํ”„๋กœํ† ์ฝœ ๊ทœ์น™์„ clas..

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์ผ ๊ฒฝ์šฐ์—”..