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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ40

[iOS] iOS Concurrency - 1. GCD/Operation, ๋™๊ธฐ/๋น„๋™๊ธฐ, ์ง๋ ฌ/๋™์‹œ Inflearn: iOS Concurrency ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜ ์ •๋ฆฌ 1. GCD/Operation์— ์•ž์„œ 1) ์™œ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํ•„์š”ํ• ๊นŒ? ์“ฐ๋ ˆ๋“œ : ์ผํ•˜๋Š” ๋…€์„๋“ค : ์•„์ดํฐ 11ํ”„๋กœ 6์ฝ”์–ด ( ์ผ์„ํ•˜๋Š” ๋…€์„์ด 6๊ฐœ๊ฐ€ ๋‹ฌ๋ ค์žˆ๋‹ค, ๋ช‡๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š”์ง€๋Š” ์•Œ๋ ค์ง€์ง€ ์•Š์Œ ๋Œ€๋žต 12๊ฐœ ์ด์ƒ ์ •๋„) ์•„์ดํฐ์€ 16๋ฐ€๋ฆฌ์˜ 1์ดˆ๋งˆ๋‹ค ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ฒŒ ๋ฆฌํ”„๋ ˆ์‹ฑ์„ ํ•˜๋Š”๋ฐ ๊ทธ ์ž‘์—…์„ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ฐฉํ•ดํ•˜๊ณ  ์žˆ์–ด์„œ ์˜์ƒ์ฒ˜๋Ÿผ ๋ฒ„๋ฒ…์ด๋Š” ํ˜„์ƒ ๋ฐœ์ƒํ•œ๋‹ค! ์•„์ดํฐ์€ ์ผํ•˜๋Š” ๋…€์„์ด ์—ฌ๋Ÿฟ์ธ๋ฐ ์™œ ๋ฒ„๋ฒ…์˜€๋Š”๊ฐ€? ๐Ÿ’ก → ํ•œ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ์—์„œ๋งŒ ์ผ์„ ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๋ฒ…์ธ ๊ฒƒ. cmd + 7 ๋ˆ„๋ฅด๋ฉด ์œ„์ฒ˜๋Ÿผ ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ์ผํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜๋ชปํ•ด์„œ ์šฐ์—ฐ์ฐฎ๊ฒŒ ํ™”๋ฉด์„ ๊ด€๋ฆฌํ•˜๋Š” ํ•œ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋งŒ ๊ณ„์† ์‚ฌ์šฉํ•ด์„œ ๋ฒ„๋ฒ…์ด๊ฒŒ ๋จ ๊ทธ๋™์•ˆ์—๋Š” ์šฐ๋ฆฌ๊ฐ€.. 2023. 2. 11.
[GitHub] PR, Issue ํ…œํ”Œ๋ฆฟ ๋„ฃ๊ธฐ ํŽธ๋ฆฌํ•œ github ํ˜‘์—…์„ ์œ„ํ•ด์„œ ๋‘๊ณ ๋‘๊ณ  ์“ธ pr๊ณผ issue ํ…œํ”Œ๋ฆฟ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ๋น ๋ฅด๊ฒŒ ์‡ฝ์‚ญ ์•Œ์•„๋ด…์‹œ๋‹ค. Issue ํ…œํ”Œ๋ฆฟ ๋„ฃ๊ธฐ ์ด์Šˆํ…œํ”Œ๋ฆฟ์€ github ์›๊ฒฉ ๋ ˆํฌ์—์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. Settings ๋“ค์–ด๊ฐ€๊ธฐ ํ…œํ”Œ๋ฆฟ ์„ค์ •์„ ์›ํ•˜๋Š” repository์˜ settings์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. 2. Set up templates ํด๋ฆญ ์Šคํฌ๋กค์„ ๋‚ด๋ ค Features - Issues - Set up templates ์ดˆ๋ก์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. 3. ์›ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์ข…๋ฅ˜ ์„ ํƒ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด ๋‘๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑ ํ•  ๋•Œ ์ด์Šˆ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋งž๋Š” ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 4. ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ feature request๋ฅผ ์„ ํƒํ•˜์˜€๊ณ  preview and edit ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ์ˆ˜์ •์„ ์œ„ํ•ด ์—ฐ.. 2023. 2. 10.
[iOS] Rx์—†์ด ๊ตฌํ˜„ํ•˜๋Š” MVVM๊ธฐ์ดˆ MVVM ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„(API)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ…Œ์ด๋ธ” ๋ทฐ์— ํ‘œ์‹œํ•˜๋Š” ์˜ˆ์ œ ์„œ๋ฒ„์—์„œ ์ง์› ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์— ๋Œ€ํ•œ ๋ฆฌ์Šคํฐ์Šค(response)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ด ๋ชฉ๋ก์„ ํ…Œ์ด๋ธ” ๋ทฐ์— ํ‘œ์‹œํ•œ๋‹ค. MVVM ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฐœ์š”์™€ ์—ญํ•  ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ (View Controller): UI ๊ด€๋ จ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ •๋ณด ํ‘œ์‹œ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋“ฑ์˜ ์ž‘์—…์ด ์žˆ๋‹ค. ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ทฐ ๋ ˆ์ด์–ด์˜ ์ผ๋ถ€์ด๋‹ค. ๋ทฐ๋ชจ๋ธ (View Model): ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋’ค ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค. ๋ชจ๋ธ (Model): MVC์—์„œ์™€ ๊ฐ™์€ ๋ชจ๋ธ์ด๋‹ค. ๋ทฐ๋ชจ๋ธ์ด ์‚ฌ์šฉํ•˜๊ณ  ๋ทฐ๋ชจ๋ธ์ด ์ƒˆ ์—…๋ฐ์ดํŠธ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ๋ชจ๋ธ๋„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ์˜ˆ์ œ ๋™์ž‘ ๋ฐฉ์‹ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ทฐ๋Š” ๋ทฐ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ .. 2023. 2. 9.
[iOS] UIButton.Configuration ์‚ฌ์šฉํ•ด๋ณด๊ธฐ SNS ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค private let kakaoLoginButton = UIButton().then{ $0.setImage(UIImage(named: "img_logo_kakao"), for: .normal) $0.backgroundColor = UIColor.kakaoyellow $0.setTitle("์นด์นด์˜ค๋กœ ๊ณ„์†ํ•˜๊ธฐ", for: .normal) $0.setTitleColor(UIColor.snslogoblack, for: .normal) $0.titleLabel?.font = UIFont.hanSansBoldFont(ofSize: 16) $0.clipsToBounds = true $0.layer.cornerRadius = 10 } ์Œ ์ด๋ฏธ์ง€์™€ ๊ธ€์”จ ์‚ฌ.. 2023. 2. 7.
[iOS] ์ œํ”Œ๋ฆฐ์—์„œ Xcode ์ปฌ๋Ÿฌ์—์…‹ ๋ฐ”๋กœ ์ถ”์ถœ ์ œํ”Œ๋ฆฐ์—์„œ ๋งŒ๋“ค์–ด ์ค€ swift UIColor Extension ์ฝ”๋“œ ๊ธ์–ด๋‹ค๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ƒ‰์ƒ์ด ์ถ”๊ฐ€๋œ๋‹ค.! ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋งŒ ์žˆ๊ณ  ๋ฌด์Šจ ์ƒ‰์ธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์–ด๋ ต๋‹ค ๐Ÿฅฒ ๋”ฐ๋ผ์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์—์…‹์นดํƒˆ๋กœ๊ทธ์—๋„ Color Asset์ถ”๊ฐ€ํ•ด์„œ ์ƒ‰์ƒ ๋ฏธ๋ฆฌ ๋ณด๋ฉด์„œ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ~!? ์˜ค๋ฅธ์ชฝ ์œ„์— ์žˆ๋Š” Export ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค ! ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ์˜ .xcassets ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๊ณ  Export ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋! ์Šค๋ณด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹น 2023. 2. 5.
[iOS] ์Šคํฌ๋กค ์‹œ ํšŒ์ƒ‰์„  ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๊ธฐ CollectionView๊ฐ€ ์Šคํฌ๋กค ๋˜๋Š”์ง€ ํŒŒ์•… ํ•ด์„œ ํŠน์ • ๋ทฐ๋ฅผ ๋„์šฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‹จ ์Šคํฌ๋กค์‹œ์— ๊ณ ์ •๋˜์–ด์žˆ๋Š” ์ƒ๋‹จ ๋กœ๊ณ ๋ทฐ์™€ ์Šคํฌ๋กค ๋˜๋Š” ์˜์—ญ ์‚ฌ์ด์˜ ํšŒ์ƒ‰์„ ์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๋Š” ํ•˜๋‹จ๊ณผ ๊ฐ™์€ ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์•ผํ–ˆ๋Š”๋ฐ์š”! ์ฒ˜์Œ์— ํŒฌ์ œ์Šค์ฒ˜๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€ ๊ณ ๋ฏผํ–ˆ์ง€๋งŒ ์ •๋ง ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์šด ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค. 1. CollectionvView๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ViewController๊ฐ€ UIScrollViewDelegate๋ฅผ ์ฑ„ํƒ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. extension MainViewController: UIScrollViewDelegate{ } 2. scrollViewDidScroll ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์ค๋‹ˆ๋‹ค. ์Šคํฌ๋กค์‹œ์— ๋‚ด๋ถ€์ ์œผ๋กœ ํ˜ธ์ถœ ๋˜๋Š” ํ•จ์ˆ˜์ธ func scrollViewDidScroll(_ scr.. 2023. 2. 2.