[iOS/Swift]Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - Network test๋ฅผ ์œ„ํ•œ mock

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. test code์—์„œ F.I.R.S.T ์›์น™์ค‘์— ํ•˜๋‚˜๋Š” Independent - ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋งŽ์ด ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” network๋ฅผ ํ†ตํ•ด request๋ฅผ ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ response๋ฅผ ๋ฐ›๋„๋ก ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ networkํ†ต์‹ ์€ ์™ธ๋ถ€์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜์–ด ํ…Œ์ŠคํŠธ ์‹œ ๋ถ„๋ฆฌํ•˜์—ฌ์•ผ ํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. test code์—์„œ ์‹ค์ œ๋กœ network ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์‹ค์ œ๋กœ ํ˜ธ์ถœ๋˜๋‹ค ๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ• ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป๋œ request๋กœ ์„œ๋ฒ„์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ test code์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ธฐ๋Šฅ ์ฝ”๋“œ์—..

iOS/Swift 2023. 10. 26. 00:48
[iOS/Swift] TestCode๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Test Doubles(Mock, Stub, Fake, dummy)

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ Stub, Mock ๋“ฑ ์ด๋Ÿฐ ๋‹จ์–ด๋“ค์„ ์ž์ฃผ ๋ณด์…จ์„ ํ…๋ฐ์š”. ๊ทธ๋ƒฅ ๋”๋ฏธ ๋ฐ์ดํ„ฐ์ธ๊ฐ€? ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐˆ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์šฉ์–ด ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค Test Double์ด๋ž€? test double์€ ๋ฌด์—‡์ผ๊นŒ? ํ…Œ์ŠคํŠธ๋ฅผ ๋‘๋ฒˆ ํ•œ๋‹ค๋Š” ๋œป์ผ๊นŒ? ์ด ๋œป์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ž ์‹œ ์ฃผ์ œ๋ฅผ ์˜ํ™”๋กœ ์˜ฎ๊ฒจ๋ณผ๊ฒŒ์š”. ์˜ํ™” ์ดฌ์˜์žฅ์—์„œ stunt double์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. stunt double์€ stunt man๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋ฐฐ์šฐ์™€ ๋น„์Šทํ•œ ์ฒด๊ฒฉ, ์™ธ๋ชจ, ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ์œ„ํ—˜ํ•œ ์”ฌ์„ ๋Œ€์‹  ์ดฌ์˜ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋งํ•˜๋Š”๋ฐ์š”. ๊ทธ๋ ‡๋‹ค๋ฉด test double์€ ์‹ค์ œ๋กœ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ์™€ ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ๋•๋Š” ..

iOS/Swift 2023. 10. 20. 00:20
[iOS/Swift] ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - sync vs async, serial vs concurrent

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹คใ…Žใ…Ž ์˜ค๋Š˜์€ ํ—ท๊ฐˆ๋ ธ๋˜ ๊ฐœ๋… sync ์™€ async serial๊ณผ concurrent ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!! Sync ์™€ Async ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ DispatchQueue๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ async ์‚ฌ์šฉ์„ ํ–ˆ์—ˆ์ฃ ? ์šฐ๋ฆฌ๊ฐ€ ์•Œ๋˜ ๋™๊ธฐ, ๋น„๋™๊ธฐ์ธ๋ฐ ๋‹จ์ˆœํžˆ ๋™๊ธฐ๋Š” ์ž‘์—…๋“ค์„ ๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ  ๋น„๋™๊ธฐ๋Š” ์ž‘์—…์˜ ๋๋‚จ๊ณผ ์ƒ๊ด€์—†์ด ๋‹ค๋ฅธ ์ž‘์—…๋„ ๋™์‹œ์— ํ•œ๋‹ค..? ๋งž๊ธด ํ•œ๋ฐ... ๋ญ๊ฐ€ ๋น ์กŒ์–ด์š”... ๋ฐ”๋กœ ์ฃผ์–ด!! ๋ˆ„๊ฐ€ ์ € ์ผ์„ ํ•˜๋Š๋ƒ๋ฅผ ๋นผ๋†“๊ณ  ์•Œ์•˜๋˜๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ์ •ํ™•ํ•œ ๋œป์ด ๋ญ˜๊นŒ์š”? ๋ˆ„๊ฐ€ ์ € ์ผ์„ ํ•˜๋Š”๊ฑธ๊นŒ์š”? ์ž‘์—…ํ•˜๋Š” ํ๋ฆ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณผ๊ฒŒ์š”! ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๋กœ ์ž‘์—…์„ ์ฃผ๊ฒŒ ๋˜๋ฉด 1๋ฒˆ thread, ์ฆ‰ main thread์—์„œ ์ž‘์—…์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ..

iOS/Swift 2022. 12. 31. 14:04
[iOS/Swift] ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - GCD vs Operation

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค!! ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•œ ๊ธ€์„ ์ผ์—ˆ๋Š”๋ฐ์š”! ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…๋“ค์„ ํ(๋Œ€๊ธฐ์—ด)์— ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค ์˜ค๋Š˜์€ ํ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค GCD(Grand Central Dispatch) ํ ํ•˜๋‹ˆ๊นŒ ๋ฐ”๋กœ ์ƒ๊ฐ๋‚œ ์นœ๊ตฌ์ด์ฃ  Dispatch Queue์ž…๋‹ˆ๋‹ค!! ๋„ค GCD์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ๊ฐ€ ๋ฐ”๋กœ Dispatch Queue์ž…๋‹ˆ๋‹ค!! ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณผ๊ฒŒ์š”! Dispatch Queue๋Š” main thread๋‚˜ background thread์— ์ง๋ ฌ ํ˜น์€ ๋ณ‘๋ ฌ๋กœ task๋ฅผ ๋‚˜๋ˆ„์–ด ์ฃผ๋Š” ์—ญํ• , thread๋ฅผ ์ ์ ˆํžˆ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์š”. ์‹ค์ œ๋กœ ์ฝ”๋“œ๋กœ๋„ ์‚ดํŽด๋ณผ๊ฒŒ์š”!! ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด ๋ณด๋ฉด Dispathc..

iOS/Swift 2022. 12. 30. 20:30
[iOS/Swift] ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์™œ ํ•„์š”ํ• ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค!! ์˜ค๋Š˜์€ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!! ๊ฐ‘์ž๊ธฐ ์™œ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ƒ...? ์š”์ฆ˜ ํšŒ์‚ฌ์—์„œ ์ž‘์—…ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ํ™”๋ฉด์—์„œ ์Šคํฌ๋กค ํ•˜๋ฉด ๋ฒ„๋ฒ…์ž„์ด ๋ฐœ์ƒํ•˜๋”๋ผ๊ตฌ์š”ใ…  (๋ชป์ฐธ๊ฒ ๋”ฐ...) ์ด๊ฑฐ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋‹ˆ.. ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊นŒ์ง€ ์™€๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋˜ ์ค‘์— ์ธํ”„๋Ÿฐ์— ์ข‹์€ ๊ฐ•์˜๊ฐ€ ์žˆ๋”๋ผ๊ตฌ์š” ์•จ๋Ÿฐ๋‹˜์˜ iOS Concurrency ๊ฐ•์˜๊ตฌ์š”!(๊ด‘๊ณ ์•„๋‹˜) ๋ณด์ž๋งˆ์ž ๋ฐ”๋กœ ๊ตฌ๋งคํ•ด ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค! https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation/dashboard ์ •๋ฆฌ ๋‚ด์šฉ์€ ๊ฐ•์˜ ๋‚ด์šฉ + ์ €์˜ ๊ฐœ์ธ์ƒ๊ฐ์ด ๋ ๊ฑฐ์—์š”! ์ด๊ฒƒ ๋‚ด์šฉ๋ณด๋‹ค๋Š” ๊ฐ•์˜ ๋‚ด์šฉ์ด ํ›จ์”ฌ ์ข‹์œผ๋‹ˆ ๊ธฐํšŒ๊ฐ€ ๋˜์‹œ๋ฉด ๊ฐ•์˜ ๋ณด์‹œ๋Š”๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ ค์š”!! ์„œ๋ก ์ด..

iOS/Swift 2022. 12. 29. 15:20
[iOS/Swift] Access Control(์ ‘๊ทผ ์ œ์–ด)

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹คใ…Žใ…Ž ์š”์ฆ˜ ๋ฌด์‹ฌ์ฝ” ์“ฐ๋‹ค๊ฐ€ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ๋ณด์—ฌ์„œ ์˜ค๋Š˜ ์ ‘๊ทผ ์ œ์–ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ์ œ์–ด ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” ์ ‘๊ทผ ์ œ์–ด๋ฅผ ๋‹ค๋ฅธ ์†Œ์Šค ํŒŒ์ผ๊ณผ ๋ชจ๋“ˆ์—์„œ ์ฝ”๋“œ์˜ ๋ถ€๋ถ„์— ์ ‘๊ทผ์— ๋Œ€ํ•ด ์ œํ•œํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์€ ์™œ ํ•„์š”ํ•œ๊ฑธ๊นŒ์š”? ๋ฐ”๋กœ ์€๋‹‰ํ™”์™€ ์บก์Šํ™”๋ฅผ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ƒ์„ธ ๊ตฌํ˜„์€ ์ˆจ๊ธธ์ˆ˜ ์žˆ๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋…ธ์ถœ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์ฃ ! ๊ทธ๋Ÿฐ๋ฐ ๊ณต์‹๋ฌธ์„œ ์„ค๋ช…์—์„œ ์†Œ์Šค ํŒŒ์ผ๊ณผ ๋ชจ๋“ˆ์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ๋Š”๋ฐ์š”! ์ด๋ถ€๋ถ„๋„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค!! ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค!! ๋ชจ๋“ˆ์€ - ๋‹จ์ผ ๋‹จ์œ„๋กœ ๋นŒ๋“œ๋˜๊ณ  ์ œ๊ณต๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ์ฝ”๋“œ ๋ฐฐํฌ์˜ ๋‹จ์ผ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. - import ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ..

iOS/Swift 2022. 12. 23. 23:50
[iOS/RxSwift] Traits ์•Œ์•„๋ณด๊ธฐ - Single, Completable, Maybe

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค:) ์˜ค๋Š˜์€ Trait์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! Traits traits๋Š” ์‚ฌ์ „์  ์˜๋ฏธ๋กœ "ํŠน์„ฑ"์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. RxSwift์—์„œ๋Š” Observable์˜ ์ข์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทผ๋ฐ Observable๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋ฉด ๊ทธ๋ƒฅ Observable์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๊ฒƒ์ด ์•„๋‹Œ๊ฐ€๋ผ๋Š” ์˜๋ฌธ์ ์ด ๋“ค์ง€ ์•Š์œผ์‹ ๊ฐ€์š”? Trait์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์žฅ์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ• ๊ฒŒ์š”! - ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์„ ํŠน์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. - ๊ฐœ๋ฐœ์ž๊ฐ„์˜ ์˜๋ฏธ ์ „๋‹ฌ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. - ๊ตฌ์ฒด์ ์ธ ๋Œ€์ƒ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. - ํ‘œํ˜„ํ•˜๊ธฐ ๋ช…ํ™•ํ•˜๋‹ค. ์ด๋Ÿฐ ์žฅ์ ๋“ค์ด ์žˆ๋Š”๋ฐ ์•„๊นŒ๋„ ๋งํ–ˆ๋“ฏ์ด Observable์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Trait์˜ ์‚ฌ์šฉ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค..

iOS/RxSwift 2022. 11. 23. 23:13
[iOS/RxSwift] Observable ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค:) ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ Observable์˜ ๊ฐœ๋…์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค! ๊ฐœ๋…์ด ์ข€ ๋” ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด ์ €๋ฒˆ ๊ฒŒ์‹œ๋ฌผ์„ ํ™•์ธํ•˜๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ด ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ Observable์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ผ๋‹จ ๋“ค์–ด๊ฐ€๊ธฐ์ „์— ๊ฐ„๋‹จํžˆ๋งŒ ์ •๋ฆฌํ•˜๋ฉด Observable์€ Elementํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ์‹œํ€€์Šค์˜ ์ •์˜์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์ •์˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ์ถœํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด Subscribe๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Observable - just just๋Š” Element 1๊ฐœ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค! just์˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด ํ•˜๋‚˜์˜ element๋งŒ ๋ฐฉ์ถœํ•œ๋‹ค๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! Observable.just(1) ...

iOS/RxSwift 2022. 11. 22. 23:51
[iOS/UIKit] Auto Layout - Priority ์‚ฌ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค:) ์˜ค๋Š˜์€ priority ์†์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.. Priority ์‚ฌ์ „ ์ •์˜๋Š” ์šฐ์„ , ์šฐ์„  ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค! ์ปดํฌ๋„ŒํŠธ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ค„ ๊ธฐ๋Šฅ ๊ฐ™๋„ค์š”! ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•ด ๋ณผ ๊ธฐ๋Šฅ์€ ์„ธ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. hugging priority, compression resistance priority, constraints priority ์ž…๋‹ˆ๋‹ค! ์ˆœ์„œ๋Œ€๋กœ ์•Œ์•„๋ณผ๊ฒŒ์š”!! Hugging Priority hugging์€ ์•ˆ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด์ฃ ? ์ง์—ญํ•˜๋ฉด ์•ˆ๊ณ  ์žˆ๋Š” ์šฐ์„ ์ˆœ์œ„์ธ๋ฐ... ์‹ค์ œ๋Š” ์–ด๋–ค ๊ธฐ๋Šฅ์ผ๊นŒ์š”? ๋ฐ”๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜์–ด๋‚˜์ง€ ์•Š๊ณ  ํฌ๊ธฐ๋ฅผ ์œ ์ง€์‹œํ‚ค๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค! ๋ฌด์Šจ๋ง์ธ์ง€ ์ดํ•ด๋˜์‹œ๋‚˜์š”? ์•ˆ๋˜์…”๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค! ์ค€๋น„ํ•œ ์˜ˆ์ œ๋ฅผ ๋ณธ๋‹ค๋ฉด ๋ฐ”๋กœ ์ดํ•ดํ•˜์‹ค๊ฑฐ์—์š”!ใ…Žใ…Ž UILabel์„ ..

iOS/UIKit 2022. 11. 21. 23:52
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ