์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. test code์์ F.I.R.S.T ์์น์ค์ ํ๋๋ Independent - ํ ์คํธ๋ ๋ ๋ฆฝ์ ์ด์ฌ์ผ ํ๋ฉฐ ์์กดํ์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด ์ค์ ๋ก ๋ง์ด ์์ฑํ๋ ์ฝ๋๋ network๋ฅผ ํตํด request๋ฅผ ํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ response๋ฅผ ๋ฐ๋๋ก ์์ฑํ ์ฝ๋์ ๋๋ค. ์ฌ๊ธฐ์ networkํต์ ์ ์ธ๋ถ์ ์์ญ์ผ๋ก ๋๋๊ฒ ๋์ด ํ ์คํธ ์ ๋ถ๋ฆฌํ์ฌ์ผ ํ๋ ์์ญ์ ๋๋ค. test code์์ ์ค์ ๋ก network ํต์ ์ ํ๊ฒ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ค์ ๋ก ํธ์ถ๋๋ค ๋ณด๋ ์๊ฐ์ด ์์๋์ด ํ ์คํธ ์คํ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ํ ์คํธ๊ฐ ์คํจํ ์๋ ์์ผ๋ฉฐ, ์๋ชป๋ request๋ก ์๋ฒ์ ์ ํจํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ test code์์ ๋ถ๋ฆฌํ๊ณ , ๊ธฐ๋ฅ ์ฝ๋์..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ ์ ๋๋ค. ํ ์คํธ ์ฝ๋์์ Stub, Mock ๋ฑ ์ด๋ฐ ๋จ์ด๋ค์ ์์ฃผ ๋ณด์ จ์ ํ ๋ฐ์. ๊ทธ๋ฅ ๋๋ฏธ ๋ฐ์ดํฐ์ธ๊ฐ? ์ด๋ ๊ฒ ์๊ฐํ๊ณ ๋์ด๊ฐ์๋ ์์ง๋ง ์ฉ์ด ์ ๋ฆฌ๋ฅผ ํ๊ณ ๊ณต๋ถํ๊ณ ์ ํฉ๋๋ค Test Double์ด๋? test double์ ๋ฌด์์ผ๊น? ํ ์คํธ๋ฅผ ๋๋ฒ ํ๋ค๋ ๋ป์ผ๊น? ์ด ๋ป์ ์์๋ณด๊ธฐ ์ํด ์ ์ ์ฃผ์ ๋ฅผ ์ํ๋ก ์ฎ๊ฒจ๋ณผ๊ฒ์. ์ํ ์ดฌ์์ฅ์์ stunt double์ด๋ผ๋ ์ฉ์ด๊ฐ ์์ต๋๋ค. stunt double์ stunt man๊ณผ ๋น์ทํ๊ฒ ๋ฐฐ์ฐ์ ๋น์ทํ ์ฒด๊ฒฉ, ์ธ๋ชจ, ํน์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ์ํํ ์ฌ์ ๋์ ์ดฌ์ํ๋ ์ฌ๋์ ๋งํ๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด test double์ ์ค์ ๋ก ์๋ ์ฝ๋๋ก ํ ์คํธ๋ฅผ ํ๋๊ฒ ์๋๋ผ ์ค์ ๋ก ๋์ํ๋ ์ฝ๋์ ๋น์ทํ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ํ ์คํธ๋ฅผ ์งํํ๋๋ก ๋๋ ..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋คใ ใ ์ค๋์ ํท๊ฐ๋ ธ๋ ๊ฐ๋ sync ์ async serial๊ณผ concurrent ์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค!! Sync ์ Async ์ ๋ฒ ํฌ์คํ ์์ DispatchQueue๋ฅผ ์ฌ์ฉํ ๋ async ์ฌ์ฉ์ ํ์์ฃ ? ์ฐ๋ฆฌ๊ฐ ์๋ ๋๊ธฐ, ๋น๋๊ธฐ์ธ๋ฐ ๋จ์ํ ๋๊ธฐ๋ ์์ ๋ค์ ๋๋ ๋ ๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค์ ์์ ์ ์ํํ๋ ๊ฒ์ด๊ณ ๋น๋๊ธฐ๋ ์์ ์ ๋๋จ๊ณผ ์๊ด์์ด ๋ค๋ฅธ ์์ ๋ ๋์์ ํ๋ค..? ๋ง๊ธด ํ๋ฐ... ๋ญ๊ฐ ๋น ์ก์ด์... ๋ฐ๋ก ์ฃผ์ด!! ๋๊ฐ ์ ์ผ์ ํ๋๋๋ฅผ ๋นผ๋๊ณ ์์๋๊ฒ ๊ฐ์ต๋๋ค ์ ํํ ๋ป์ด ๋ญ๊น์? ๋๊ฐ ์ ์ผ์ ํ๋๊ฑธ๊น์? ์์ ํ๋ ํ๋ฆ์ ๊ฐ๋จํ๊ฒ ์ดํด๋ณผ๊ฒ์! ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ก ์์ ์ ์ฃผ๊ฒ ๋๋ฉด 1๋ฒ thread, ์ฆ main thread์์ ์์ ์ด ์งํ๋ฉ๋๋ค. ๊ทธ๋ฐ..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค!! ์ ๋ฒ ํฌ์คํ ์์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ํ์์ฑ์ ๋ํ ๊ธ์ ์ผ์๋๋ฐ์! ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ํ๊ธฐ ์ํด ์์ ๋ค์ ํ(๋๊ธฐ์ด)์ ๋ณด๋ด์ผ ํ๋ค๋ ์ฌ์ค์ ์์์ต๋๋ค ์ค๋์ ํ์ ์ข ๋ฅ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค GCD(Grand Central Dispatch) ํ ํ๋๊น ๋ฐ๋ก ์๊ฐ๋ ์น๊ตฌ์ด์ฃ Dispatch Queue์ ๋๋ค!! ๋ค GCD์์ ์ฌ์ฉํ๋ ํ๊ฐ ๋ฐ๋ก Dispatch Queue์ ๋๋ค!! ๊ณต์๋ฌธ์๋ฅผ ํตํด ์ดํด๋ณผ๊ฒ์! Dispatch Queue๋ main thread๋ background thread์ ์ง๋ ฌ ํน์ ๋ณ๋ ฌ๋ก task๋ฅผ ๋๋์ด ์ฃผ๋ ์ญํ , thread๋ฅผ ์ ์ ํ ์์ฑ ๋ฐ ๊ด๋ฆฌ ํ๋ ์ญํ ์ ํ๊ณ ์๋ค๊ณ ํ๋ค์. ์ค์ ๋ก ์ฝ๋๋ก๋ ์ดํด๋ณผ๊ฒ์!! ํด๋น ์ฝ๋๋ฅผ ๋ถ์ํด ๋ณด๋ฉด Dispathc..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค!! ์ค๋์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค!! ๊ฐ์๊ธฐ ์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ด๋...? ์์ฆ ํ์ฌ์์ ์์ ํ๋ฉด์ ํ ์คํธ๋ฅผ ํ๋๋ฐ ํ๋ฉด์์ ์คํฌ๋กค ํ๋ฉด ๋ฒ๋ฒ ์์ด ๋ฐ์ํ๋๋ผ๊ตฌ์ใ (๋ชป์ฐธ๊ฒ ๋ฐ...) ์ด๊ฑฐ ํด๊ฒฐํ๋ ค๊ณ ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋.. ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ๊น์ง ์๋ฒ๋ ธ์ต๋๋ค! ๊ทธ๋ฌ๋ ์ค์ ์ธํ๋ฐ์ ์ข์ ๊ฐ์๊ฐ ์๋๋ผ๊ตฌ์ ์จ๋ฐ๋์ iOS Concurrency ๊ฐ์๊ตฌ์!(๊ด๊ณ ์๋) ๋ณด์๋ง์ ๋ฐ๋ก ๊ตฌ๋งคํด ๋ฒ๋ ธ์ต๋๋ค! https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation/dashboard ์ ๋ฆฌ ๋ด์ฉ์ ๊ฐ์ ๋ด์ฉ + ์ ์ ๊ฐ์ธ์๊ฐ์ด ๋ ๊ฑฐ์์! ์ด๊ฒ ๋ด์ฉ๋ณด๋ค๋ ๊ฐ์ ๋ด์ฉ์ด ํจ์ฌ ์ข์ผ๋ ๊ธฐํ๊ฐ ๋์๋ฉด ๊ฐ์ ๋ณด์๋๊ฒ์ ์ถ์ฒ๋๋ ค์!! ์๋ก ์ด..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋คใ ใ ์์ฆ ๋ฌด์ฌ์ฝ ์ฐ๋ค๊ฐ ์ ๋ฆฌ๊ฐ ํ์ํด ๋ณด์ฌ์ ์ค๋ ์ ๊ทผ ์ ์ด์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค. ์ ๊ทผ์ ์ด ๊ณต์๋ฌธ์์์๋ ์ ๊ทผ ์ ์ด๋ฅผ ๋ค๋ฅธ ์์ค ํ์ผ๊ณผ ๋ชจ๋์์ ์ฝ๋์ ๋ถ๋ถ์ ์ ๊ทผ์ ๋ํด ์ ํํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ๊ทธ๋ผ ์ด๋ฐ ๊ธฐ๋ฅ์ ์ ํ์ํ๊ฑธ๊น์? ๋ฐ๋ก ์๋ํ์ ์บก์ํ๋ฅผ ์ํด์์ ๋๋ค. ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ์ฝ๋์ ์์ธ ๊ตฌํ์ ์จ๊ธธ์ ์๊ณ , ํ์ํ ๊ธฐ๋ฅ๋ง ๋ ธ์ถ์ํฌ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด์ฃ ! ๊ทธ๋ฐ๋ฐ ๊ณต์๋ฌธ์ ์ค๋ช ์์ ์์ค ํ์ผ๊ณผ ๋ชจ๋์ด๋ผ๋ ์ฉ์ด๊ฐ ์๋๋ฐ์! ์ด๋ถ๋ถ๋ ๊ฐ๋จํ ์์๋ณด๊ณ ๊ฐ๊ฒ ์ต๋๋ค!! ๋ชจ๋๊ณผ ์์คํ์ผ ์ด๊ฒ์ ๋ํ ๋ด์ฉ์ ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค!! ๋ชจ๋์ - ๋จ์ผ ๋จ์๋ก ๋น๋๋๊ณ ์ ๊ณต๋๋ ํ๋ ์์ํฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ ์ฝ๋ ๋ฐฐํฌ์ ๋จ์ผ ๋จ์์ ๋๋ค. - import ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ..
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ค๋์ Subject์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค!! Subject๋ ๋ฌด์์ธ๊ฐ? ReactiveX์ ๊ณต์ ํํ์ด์ง๋ฅผ ๊ฐ๋ณด๋ฉด ์ด๋ ๊ฒ ์ ์ ๋์ด ์์ต๋๋ค. ํต์ฌ๋ง ์์ฝํด ๋ณผ๊ฒ์! - subject๋ observer์ observable์ ์ญํ ์ ํ๋ค!! - ํ๋ ์ด์์ observable์ ๊ตฌ๋ ํ ์ ์๊ณ , ์ฌ๋ฌ ์ต์ ๋ฒ๋ก item์ ๋ฐฉ์ถํ ์ ์๋ค. ์ด๋ฐ ํน์ง์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ ์๋์ง ์ฝ๋๋ก ํ์ธํด ๋ณผ๊ฒ์!! let publishSubject = PublishSubject() publishSubject.onNext("๋๊ตฌ๋ฆฌ ๋ฐฉ์ถ 1") let subscriber1 = publishSubject .subscribe(onNext: { print($0) }) publishSu..
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ค๋์ Trait์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค! Traits traits๋ ์ฌ์ ์ ์๋ฏธ๋ก "ํน์ฑ"์ด๋ผ๋ ๋ป์ ๋๋ค. RxSwift์์๋ Observable์ ์ข์ ์๋ฏธ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ทผ๋ฐ Observable๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ฉด ๊ทธ๋ฅ Observable์ ์ฌ์ฉํ๋ฉด ๋๋๊ฒ์ด ์๋๊ฐ๋ผ๋ ์๋ฌธ์ ์ด ๋ค์ง ์์ผ์ ๊ฐ์? Trait์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์? ์ฅ์ ์ ๋ํด ์์๋ณด๋๋ก ํ ๊ฒ์! - ์ฐ๋ฆฌ๊ฐ ๊ตฌํํ๊ณ ์ ํ๋ ๊ฒ์ ํน์ฑํ ํ ์ ์๋ค. - ๊ฐ๋ฐ์๊ฐ์ ์๋ฏธ ์ ๋ฌ์ ๋ช ํํ๊ฒ ํ ์ ์๋ค. - ๊ตฌ์ฒด์ ์ธ ๋์์ ์ฌ์ฉํ ์ ์๋ค. - ํํํ๊ธฐ ๋ช ํํ๋ค. ์ด๋ฐ ์ฅ์ ๋ค์ด ์๋๋ฐ ์๊น๋ ๋งํ๋ฏ์ด Observable์ ์ฌ์ฉํด๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ Trait์ ์ฌ์ฉ์ ๊ฐ๋ฐ์๊ฐ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค..
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ ๋ฒ ํฌ์คํ ์์ Observable์ ๊ฐ๋ ์ ์์๋ดค์ต๋๋ค! ๊ฐ๋ ์ด ์ข ๋ ๊ถ๊ธํ์๋ค๋ฉด ์ ๋ฒ ๊ฒ์๋ฌผ์ ํ์ธํ๊ณ ์ค์๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฒ์๋ ์ด ๊ฐ๋ ์ ๋ฐํ์ผ๋ก Observable์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ์ผ๋จ ๋ค์ด๊ฐ๊ธฐ์ ์ ๊ฐ๋จํ๋ง ์ ๋ฆฌํ๋ฉด Observable์ Elementํ์ ์ ์ฌ์ฉํ๋ ์ ๋ค๋ฆญ ํด๋์ค๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐฉ์ถํ๋ ์ํ์ค์ ์ ์์ ๋๋ค. ๋ง ๊ทธ๋๋ก ์ ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐฉ์ถํ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด Subscribe๋ฅผ ํด์ฃผ์ด์ผ ํฉ๋๋ค. Observable - just just๋ Element 1๊ฐ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํฉ๋๋ค! just์ ์ฝ๋๋ฅผ ํ์ธํด ๋ณด๋ฉด ํ๋์ element๋ง ๋ฐฉ์ถํ๋ค๊ณ ๋์ด ์์ต๋๋ค. ์ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค! Observable.just(1) ...
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ค๋์ priority ์์ฑ์ ๋ํด ์์๋ณด๊ณ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.. Priority ์ฌ์ ์ ์๋ ์ฐ์ , ์ฐ์ ํ ๊ฒ ์ ๋๋ค! ์ปดํฌ๋ํธ์ ์ฐ์ ์์๋ฅผ ์ค ๊ธฐ๋ฅ ๊ฐ๋ค์! ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํด ๋ณผ ๊ธฐ๋ฅ์ ์ธ๊ฐ์ง ์ ๋๋ค. hugging priority, compression resistance priority, constraints priority ์ ๋๋ค! ์์๋๋ก ์์๋ณผ๊ฒ์!! Hugging Priority hugging์ ์๊ณ ์๋ค๋ ๋ป์ด์ฃ ? ์ง์ญํ๋ฉด ์๊ณ ์๋ ์ฐ์ ์์์ธ๋ฐ... ์ค์ ๋ ์ด๋ค ๊ธฐ๋ฅ์ผ๊น์? ๋ฐ๋ก ์ปดํฌ๋ํธ์ ์ฌ์ด์ฆ๋ฅผ ๋์ด๋์ง ์๊ณ ํฌ๊ธฐ๋ฅผ ์ ์ง์ํค๋ ์ฐ์ ์์๋ฅผ ๋งํฉ๋๋ค! ๋ฌด์จ๋ง์ธ์ง ์ดํด๋์๋์? ์๋์ ๋ ์๊ด์์ต๋๋ค! ์ค๋นํ ์์ ๋ฅผ ๋ณธ๋ค๋ฉด ๋ฐ๋ก ์ดํดํ์ค๊ฑฐ์์!ใ ใ UILabel์ ..
- Total
- Today
- Yesterday
- ios
- ํ ์คํธ
- test
- func
- XCTest
- Swift Network
- ์ค์ํํธ ๊ณต๋ถ
- ์ค์ํํธ
- Property
- ์คํ ๋ ์ด์์
- observable
- URLSession
- Subscribe
- RX
- ํ๋กํผํฐ
- Clean
- Unit Test
- swift ํ๋กํ ์ฝ
- ํ๋กํ ์ฝ
- set
- autolayout
- ์ค์ํํธ ํ๋กํ ์ฝ
- RxSwift
- network
- ์ค์ํํธ map
- swift urlsession
- swift ๊ณต๋ถ
- swift
- Protocol
- ๊ณต๋ถ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |