Deep_Dev
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][iOS] QOS
๐ŸŽ iOS/Swift 2023. 6. 13. 15:28

QoS ( Quality of Service ) QoS๋Š” ์„œ๋น„์Šค์˜ ํ’ˆ์งˆ์ด๋‹ค. DispatchQueue์˜ ์ž‘์—…์„ ์šฐ์„ ์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ค‘์š”๋„์— ๋”ฐ๋ผ ์•ฑ ์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•ด ์‹œ์Šคํ…œ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ตœ์ ์˜ ์‹œ๊ฐ„๊นŒ์ง€ ์ž‘์—…์„ ์—ฐ๊ธฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋‹ค๋ฅธ ํšจ์œจ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ์—๋„ ์‹œ์Šคํ…œ์€ ์—ฌ์ „ํžˆ ์ผ์ • ์ˆ˜์ค€์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค. QoS์˜ class ์ •๋ณด ์„œ๋น„์Šค ํ’ˆ์งˆ(QoS) ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ NSOperation, NSOperationQueue, NSThread๊ฐœ์ฒด, ๋””์ŠคํŒจ์น˜ ๋Œ€๊ธฐ์—ด ๋ฐ pthread(POSIX ์Šค๋ ˆ๋“œ)๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž‘์—…์— QoS๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ค‘์š”๋„๋ฅผ ํ‘œ์‹œํ•˜๋ฉด..

article thumbnail
[iOS][UiKit] SnapKit ์ •๋ฆฌ ( inset/offset , translates~ )
๐ŸŽ iOS/UIKit 2023. 6. 9. 16:44

SnapKit SnapKit์„ ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„ ์ •๋ฆฌ - offset/inset - translateAutoresizingMaskIntoContraints ๐Ÿ“Œ offset / inset ๐Ÿ’กoffset ์‚ฌ์šฉ์‹œ 'ํ˜„์žฌ ๋ทฐ constraint = ์Šˆํผ๋ทฐ constraint + offset ๊ฐ’'์„ ์ƒ๊ฐํ•˜๊ณ  ์„ค์ •ํ•œ๋‹ค. label.snp.makeConstraints { make in make.top.equalToSuperview().offset(50) make.left.equalToSuperview().offset(50) make.right.equalToSuperview().offset(-50) make.bottom.equalToSuperview().offset(-50) } ๊ธฐ์ค€์ด ๋˜๋Š” View์— ๋งž์ถฐ์„œ ..

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

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..