ํ‹ฐ์Šคํ† ๋ฆฌ

๐ŸŽ๐Ÿ๐Ÿˆ๐Ÿ–ฅ๐Ÿ˜‡
๊ฒ€์ƒ‰ํ•˜๊ธฐ

๋ธ”๋กœ๊ทธ ํ™ˆ

๐ŸŽ๐Ÿ๐Ÿˆ๐Ÿ–ฅ๐Ÿ˜‡

jeonyeohun.tistory.com/m

๋ฐฐ์›Œ์„œ ๋‚จ์ฃผ์ž!

๊ตฌ๋…์ž
98
๋ฐฉ๋ช…๋ก ๋ฐฉ๋ฌธํ•˜๊ธฐ

์ฃผ์š” ๊ธ€ ๋ชฉ๋ก

  • 2024๋…„ ํšŒ๊ณ  ํšŒ๊ณ ๋Š” ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ์— ์ฐจ๊ณก์ฐจ๊ณก ๋ชจ์œผ๊ณ  ์‹ถ์–ด ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ๋กœ ์˜ฎ๊ฒผ์–ด์š”. ๊ฐœ๋ฐœ๋ณด๋‹ค๋Š” ๊ฐœ์ธ์ ์ธ ๋‚ด์šฉ์ด ๋งŽ์Šต๋‹ˆ๋‹คใ…Žใ…Ž ์ •์‹ ์—†์ด ๋ณด๋‚ธ ํ•œ ํ•ด๋ฅผ ์ž˜ ๋งˆ์น˜๊ณ  2025๋…„๋„ ๋ฌดํƒˆํ•˜๊ณ  ํ‰์•ˆํžˆ ๋ณด๋ƒˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.outdated ๋œ ๊ธฐ์ˆ  ํฌ์ŠคํŒ…, ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ๊ฒ€ํ† ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ  ํฌ์ŠคํŒ…์€ ์•„๋งˆ ์ž˜ ์˜ฌ๋ผ์˜ค์ง€ ์•Š๊ฒ ์ง€๋งŒ ์•ž์œผ๋กœ๋„ ์ž˜ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.์ƒˆํ•ด ๋ณต ๋งŽ์ด ๋ฐ›์œผ์„ธ์š”.https://m.blog.naver.com/hunihun622/223704472936 2024๋…„ ์ด์•ผ๊ธฐ3๋…„ ์ฐจ ์˜ฌํ•ด๋กœ ํšŒ์‚ฌ์— ์ž…์‚ฌํ•œ ์ง€ 3๋…„ ์ฐจ๊ฐ€ ๋˜์—ˆ๋‹ค. ์‚ฌ๋žŒ๊ณผ ์ผ ๋ชจ๋‘ ์ต์ˆ™ํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์ฃผ๋„์ ์œผ๋กœ ์—…๋ฌด๋ฅผ...blog.naver.com์„œ์ด์ถ”๋„ ํ™˜์˜์ž…๋‹ˆ๋‹ค~~! ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 0 2025. 1. 5.
  • 2023๋…„์„ ๋งˆ์น˜๋ฉฐ ๋‚จ๊ธฐ๊ณ  ์‹ถ์€ ์ด์•ผ๊ธฐ๋“ค 2๋…„ ์ฐจ๋ฅผ ๋ณด๋‚ด๋ฉฐ ์˜ฌํ•ด๋ถ€ํ„ฐ๋Š” 2๋…„ ์ฐจ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์‚ถ์„ ์‚ด์•˜๋‹ค. ์ฒ˜์Œ ์‹ ์ž…์œผ๋กœ ์ž…์‚ฌํ•ด ์—…๋ฌด๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์ด์Šˆ ํ•˜๋‚˜๋ฅผ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๋‚ด๊ฐ€ ํ•ด๊ฒฐ ๋ชปํ•˜๋Š” ๋ฌธ์ œ์ผ๊นŒ ๋ฒŒ๋ฒŒ ๋–จ์—ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ์ž‘์€ ํ•œ์ˆจ๊ณผ ํ•จ๊ป˜ ์•„๋ฌด๋ ‡์ง€๋„ ์•Š๊ฒŒ ์ด์Šˆํ•ด๊ฒฐ์„ ์‹œ์ž‘ํ•œ๋‹ค. ์Šฌ๋ž™์—์„œ ๋‚˜๋ฅผ ๋ฉ˜์…˜ํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ณ , ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ํŒ€์›๋“ค์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด์„œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋˜ ๋‚ด๊ฐ€ ํƒ€ ํŒ€ ๋ฉค๋ฒ„๋“ค๊ณผ ๋…ผ์˜ํ•ด ์ง์ ‘ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ์ •์— ํ™•์‹ ์ด ์žˆ์„ ๋•Œ๋ฉด "์–ธ์ œ ๋‚ด๊ฐ€ ์ด๋ ‡๊ฒŒ ๋์ง€" ํ•˜๊ณ  ๊ดœ์Šค๋ ˆ ๋ฟŒ๋“ฏํ•ดํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์˜ฌํ•ด๋Š” ์ฝ”๋“œ์ ์ธ ๊ธฐ์—ฌ๋ฅผ ๋งŽ์ด ํ•œ ํ•œ ํ•ด์˜€๋‹ค. ์–ด๋–ค ๋‚ ์€ ํ•˜๋ฃจ์— PR์„ 5๊ฐœ์”ฉ ์˜ฌ๋ฆฌ๊ธฐ๋„ ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“  ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด ์„œ๋น„์Šค์— ๋“ค์–ด๊ฐ€๊ธฐ๋„ ํ•˜๊ณ , ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ๋ฅผ SwiftUI๋กœ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ง  ํ™”๋ฉด๋“ค๋„ ์ƒ๊ฒผ๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“  ํ™”๋ฉด๋“ค์ด .. ๊ณต๊ฐ์ˆ˜ 14 ๋Œ“๊ธ€์ˆ˜ 2 2023. 12. 30.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด(Template Method Pattern) ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ณจ๊ฒฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ผ๋ถ€ ๋‹จ๊ณ„๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌ์กฐ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ • ๋‹จ๊ณ„๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. - ํ—ค๋“œํผ์ŠคํŠธ ๋””์ž์ธ ํŒจํ„ด ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด์€ ๋‹จ๊ณ„์ ์ธ ๊ณผ์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”์ƒ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ , ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ํ•„์š”์— ๋”ฐ๋ผ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ํšŒ์›๊ฐ€์ž…์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ฒ ์ฃ . ์•„์ด๋””๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ค‘๋ณต๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ทœ์น™์„ ํ™•์ธํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๊ฐ€์ž… ์™„๋ฃŒ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์ด ๋•Œ, ๋งŒ์•ฝ ์ƒํ™ฉ์— ๋”ฐ.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 3 2022. 4. 23.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ๋ฐ˜๋ณต์ž ํŒจํ„ด(Iterator Pattern) ๋ฐ˜๋ณต์ž ํŒจํ„ด(Iterator Pattern) ๋ฐ˜๋ณต์ž ํŒจํ„ด์€ ์ปฌ๋ ‰์…˜์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ž ํŒจํ„ด์€ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ปฌ๋ ‰์…˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์—ญํ• ์„ ๋ถ„๋ฆฌํ•ด๋‚ด๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ž ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปฌ๋ ‰์…˜์€ ์ž์‹ ์˜ ์š”์†Œ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ , ์–ด๋–ค ์š”์ฒญ์— ์˜ํ•ด ํŠน์ •ํ•œ ์š”์†Œ๋ฅผ ์™ธ๋ถ€๋กœ ์•Œ๋ ค์ฃผ๋Š” ์ฑ…์ž„์€ Iterator์—๊ฒŒ ๋ชจ๋‘ ๋งก๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์ฃ . ์ •์˜์—์„œ๋Š” ์ปฌ๋ ‰์…˜์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•˜๋Š”๋ฐ์š”, ์ด ์˜๋ฏธ๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜์ด ๋ฐฐ์—ด์ธ์ง€, ๋ฆฌ์ŠคํŠธ์ธ์ง€์™€ ๊ฐ™์€ ์‹ค์ œ ๊ตฌ์กฐ์™€๋Š” ์ „ํ˜€ ์ƒ๊ด€์—†์ด ๊ฐ ์›์†Œ๋“ค์— ์ ‘๊ทผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ Iterator๋ฅผ ๋ฐ›์•„์„œ ๋์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์›์†Œ.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 3 2022. 4. 23.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ์ปค๋งจ๋“œ ํŒจํ„ด(Command Pattern) ์ปค๋งจ๋“œ ํŒจํ„ด(Command Pattern) The command pattern encapsulate a request as an object, thereby letting you parameterize other objects different requests queue or log request and support undoable operation ์ปค๋งจ๋“œ ํŒจํ„ด์€ ์–ด๋–ค ๊ฐ์ฒด๋กœ ๋ณด๋‚ด๋Š” ์š”์ฒญ์„ ์บก์Аํ™”ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด๋‚˜, ์š”์ฒญ์„ ๋ฐ›๋Š” ๊ฐ์ฒด์™€ ์ƒ๊ด€์—†์ด ์š”์ฒญ ์ž์ฒด๋ฅผ ๊ฐ์ฒด๋กœ ์บก์Аํ™” ํ•˜๋Š” ํŒจํ„ด์ด์ฃ . ์ด๋ ‡๊ฒŒ ์š”์ฒญ์„ ์บก์Аํ™” ํ•œ๋‹ค๋ฉด, ์–ด๋–ค ์ž‘์—…์— ๋Œ€ํ•œ ์š”์ฒญ๋“ค์„ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ๋‘๊ณ , ํ•„์š”์— ๋”ฐ๋ผ์„œ ๊ฐ์ฒด์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฐ์ฒด๋“ค์„ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„๋‘๋ฉด ์–ด๋–ค ์ ˆ์ฐจ์ .. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 20.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern) ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern) The singleton pattern ensures a class has only one instance and provides a global point of access to it. ์˜ค๋Š˜์€ ํ•ญ์ƒ ๋…ผ๋ž€์˜ ์ค‘์‹ฌ์— ์žˆ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค..! ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด์ง„ ์ดํ›„์—๋Š” ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ ˆ๋Œ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋„๋กํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์˜์—ญ์—์„œ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ์›๋ฆฌ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ํ•ต์‹ฌ์€ ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ฒ˜์Œ์— ์ƒ์„ฑํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋จผ์ € ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  .. ๊ณต๊ฐ์ˆ˜ 5 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 12.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #126 2022.02.11 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ์‹ฑ๊ธ€ํ†ค, ์ปค๋งจ๋“œ, ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด ๊ณต๋ถ€. ํฌ์ŠคํŠธ ์ดˆ์•ˆ ์ž‘์„ฑํ•˜๊ธฐ ์ž…์‚ฌ ์ค€๋น„ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ์˜ค๋Š˜์€ ๋””์ž์ธ ํŒจํ„ด์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ›‘๊ณ  ๋‚˜์ค‘์— ์ฝ์–ด๋ณผ ์ž๋ฃŒ๋“ค์„ ์ˆ˜์ง‘ํ–ˆ๋‹ค. iOS Architectures Explained: Which One Best Fits My Project? And know when to use MVC, MVVM, VIPER, and Coordinator patterns betterprogramming.pub Part 6: Swift Tricks That Junior iOS Developers Might not Know Know better, be better. medium.com Façade Design Pattern in Swift, and .. ๊ณต๊ฐ์ˆ˜ 5 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 11.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด(Abstract Factory Pattern) ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด The abstract factory pattern provides an interface of creating families of related or dependent objects without specifying their concrete classes. ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜๋Š”๋ฐ์š”, ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด๊ณผ ์•„์ฃผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋””์ž์ธ ํŒจํ„ด์˜ ์ฐจ์ด๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค๋ฉด ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ณ , ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์‚ฌ์‹ค ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด๊ณผ ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์ด ๋‹ค๋ฅธ ์ ์ด ์—†์–ด์š”. ์˜์กด์„ฑ ์ฃผ์ž… ๊ด€์ ์—์„œ๋Š” ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ํ•˜.. ๊ณต๊ฐ์ˆ˜ 5 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 10.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด(Factory Method Pattern) ํŒฉํ† ๋ฆฌ ํŒจํ„ด (Factory Pattern) ๋จผ์ € ํŒฉํ† ๋ฆฌ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ด…์‹œ๋‹ค. ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๊ทธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์—์„œ ์ง์ ‘ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํŒฉํ† ๋ฆฌ๋ผ๋Š” ๊ฐ์ฒด์—๊ฒŒ ๊ทธ ์ž‘์—…์„ ๋งก๊ฒจ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ์™œ ํ•„์š”ํ• ๊นŒ์š”? ํŒฉํ† ๋ฆฌ ํŒจํ„ด์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ํ•œ ๋ฒˆ ์บก์Аํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์บก์Аํ™”ํ–ˆ์„ ๋•Œ๋Š” ๋‘ ๊ฐ€์ง€ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ฒซ๋ฒˆ์งธ ํšจ๊ณผ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋ผ์–ด์žˆ์„ ๋•Œ, ์ด ๋กœ์ง์„ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋‘๋ฒˆ์งธ ํšจ๊ณผ๋Š” ๋‹คํ˜•์„ฑ์„ ํ†ตํ•ด ์–ธ์ œ๋“ ์ง€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒฉํ† ๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ๋ฐ”๋€๋‹ค๊ณ .. ๊ณต๊ฐ์ˆ˜ 3 ๋Œ“๊ธ€์ˆ˜ 2 2022. 2. 9.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #125 2022.02.08 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด ํฌ์ŠคํŠธ ์ •๋ฆฌ NSCache ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์—์„œ Decorator ๊ฐ์ฒด๋Š” ์ž์‹ ์ด ์ถ”๊ฐ€๋  ๋Œ€์ƒ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๋™์‹œ์— ์†Œ์œ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋“œ์„ ์—ฐ์‡„์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ณ , ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์žฌ๊ท€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. NSCache๋Š” LRU์™€ LFU์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ LRU๋กœ ๊ฐ€์žฅ ์˜ค๋ž˜์ „์— ์ฐธ์กฐํ•œ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ๊ทธ ๊ฐ์ฒด์˜ ์ฐธ์กฐํšŸ์ˆ˜๊ฐ€ ์บ์‹œ ๋‚ด์˜ ์žˆ๋Š” ๊ฐ์ฒด๋“ค์˜ ์ฐธ์กฐ ํšŸ์ˆ˜ ํ‰๊ท ๋ณด๋‹ค ๋†’๋‹ค๋ฉด ์œ ์˜๋ฏธํ•œ ๊ฐ์ฒด๋กœ ํŒ๋‹จํ•ด์„œ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ์œผ๋กœ ์˜ค๋ž˜์ „์— ์ฐธ์กฐํ•œ ๊ฐ์ฒด๋ฅผ ํ™•์ธํ•œ๋‹ค. NSCache์—์„œ setObject๋ฅผ ํ•  ๋•Œ cost๋ฅผ ์•ˆ์ค€๋‹ค๋ฉด ๊ทธ๋ƒฅ.. ๊ณต๊ฐ์ˆ˜ 4 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 8.
  • [iOS] NSCache์˜ ์บ์‹œ ์ •์ฑ… ๋œฏ์–ด๋ณด๊ธฐ NSCache ์˜ค๋Š˜์€ ๊ฐ€๋ฒผ์šด ์ด๋ฏธ์ง€ ์บ์‹œ์— ์ž์ฃผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ๋ฌด์‹ฌ์ฝ” ์‚ฌ์šฉํ•ด์˜ค๊ธฐ๋งŒ ํ–ˆ๋˜ NSCache๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ค ์ •์ฑ…์„ ๋‘๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์—๋Š” NSCache๊ฐ€ ๋‹ค์–‘ํ•œ ์ž๋™ ์ œ๊ฑฐ ์ •์ฑ…(auto-eviction policy)์„ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”, ์–ด๋–ค ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ์ง€๋Š” ์•Š์•„์š”. ๊ทธ๋ž˜์„œ Foundation์— ๋“ค์–ด๊ฐ€๋Š” Objective-C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ libs-base์—์„œ NSCache์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค..! ์ œ๊ฑฐ Objc๋Š” ๋ฆฌ๋”ฉ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋ชปํ•ด์„œ ํ‹€๋ฆฐ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์–ด์š”..! ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ  ๋‚จ๊ฒจ๋‘˜๊ฒŒ์š”! ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”! ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! GitHub .. ๊ณต๊ฐ์ˆ˜ 5 ๋Œ“๊ธ€์ˆ˜ 2 2022. 2. 8.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด(Decorator Pattern) ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด(Decorator Pattern) Decorator pattern attatches additional repsonsibilities to an object dynamically. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์ด ๋ฌด์—‡์ผ๊นŒ์š”? ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๊ฐ์ฒด์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ (๋ฉ”์„œ๋“œ ํ˜ธ์ถœ) ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์–ด๋–ค ๋™์ž‘์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘์„ ์ถ”๊ฐ€ํ•ด ๋Ÿฐํƒ€์ž„์— ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ํƒ€์ž„์— ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์€ ๊ฐ์ฒด๋ฅผ ํ•œ๋ฒˆ ๊ฐ์‹ธ๋Š” ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ๋‘๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ์š”! Concrete ๊ฐ์ฒด๋Š” ์›๋ž˜ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํƒ€์ž…์ด๊ณ , Wrapper๋Š” Con.. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 1 2022. 2. 8.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #124 2022.02.03 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋™์ƒˆ ๋งŒ๋‚˜๊ธฐ ๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ค„์™”๋˜ '๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด' ์ฝ๊ณ  ์ •๋ฆฌํ•˜๊ธฐ ๋””์ž์ธ ํŒจํ„ด ๊ณต๋ถ€ - ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด ๋ถ€์บ  ์šด์˜์ง„๊ณผ ๋งˆ์Šคํ„ฐ๋‹˜์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋””์—  ๋‚จ๊ธฐ๊ธฐ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. 1~2์žฅ์˜ ์ ˆ๋ฐ˜์„ ์ฝ์œผ๋ฉด์„œ ์ธ์ƒ๊นŠ์—ˆ๋˜ ๋ฌธ์žฅ์„ ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค. ์ด ์ฑ… ํ•œ ๊ถŒ์„ ์ฝ์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๊ฐ‘์ž๊ธฐ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ˆ˜์ค€์ด ๋†’์•„์ง„๋‹ค๊ฑฐ๋‚˜ ๋” ํ›Œ๋ฅญํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ฑฐ๋‚˜ ํ•˜๋Š” ์ผ์€ ์ ˆ๋Œ€ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ค‘๋žต) ํ•˜์ง€๋งŒ ์ด๊ฒƒ ํ•œ ๊ฐ€์ง€๋Š” ์žฅ๋‹ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฑ…์„ ์ฝ๊ณ  ๋‚˜๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์„ ๋ฐ”๋ผ๋ณด๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ์‹œ์•ผ๊ฐ€ ๊นŠ์–ด์ง€๋Š” ๋™์‹œ์— ๋„“์–ด์งˆ ๊ฒƒ์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์—ญํ• ์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ์˜๋ฏธ์ ์œผ๋กœ ์ฑ…์ž„์ด๋ผ๋Š” ๊ฐœ๋…์„ ๋‚ดํฌํ•œ๋‹ค. ํ˜‘๋ ฅ์˜ ํ•ต์‹ฌ์€ ํŠน์ •ํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ๋“ค ๊ฐ„์˜ ์—ฐ์‡„์ ์ธ ์š”์ฒญ๊ณผ ์‘๋‹ต์„.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 4.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #123 2022.02.02 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ธ”๋กœ๊ทธ ๊ฐœํŽธ ๋””์ž์ธ ํŒจํ„ด ๊ณต๋ถ€ - ์ „๋žต ํŒจํ„ด, ํŒฉํ† ๋ฆฌ ํŒจํ„ด ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ์ „๋žต ํŒจํ„ด์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจ๋ฐ€๋ฆฌ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ฒŒ ํ•ด์„œ ๋Ÿฐํƒ€์ž„์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๊ณ , ์œ ์—ฐํ•˜๊ฒŒ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ OCP๋ฅผ ๋”ฐ๋ฅด์ง€๋งŒ ๋‚˜๋จธ์ง€ ์›์น™๋“ค๋„ ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค. ์ „๋žต ํŒจํ„ด์—์„œ ๊ฒฐ๊ตญ ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ ๋กœ์ง๊ณผ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋А์Šจํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ํŒฉํ† ๋ฆฌ ํŒจํ„ด์€ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ์„ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋งก๊ฒจ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ํ†ตํ•ด์„œ ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ ๋‹ค. ์˜์กด์„ฑ์ด ์ฃผ์ž…๋˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ์ดํ•˜๋‹ค. ์˜ค๋Š˜ ๋А๋‚€ ๊ฒƒ. ๋ฉด์ ‘๊ด€๋‹˜์ด ๋””์ž์ธ ํŒจํ„ด๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๋ผ๋Š” ์กฐ์–ธ์„ ์ฃผ์…”์„œ ์ด๋ฒˆ ๋‹ฌ์ด๋‚˜ ๋‹ค์Œ ๋‹ฌ ๋‚ด๋กœ GoF ๋””์ž์ธ ํŒจํ„ด 2.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 2.
  • [์Šค์œ„ํ”„ํŠธ ๋””์ž์ธํŒจํ„ด] ์ „๋žต ํŒจํ„ด(Strategy Pattern) ์ „๋žต ํŒจํ„ด(Strategy Pattern) ์ „๋žต ํŒจํ„ด์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ง‘ํ•ฉ(Algorithm Family)์„ ์‚ฌ์šฉํ•˜๋Š” ํ–‰์œ„ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ๊ฐ ๊ฐ์ฒด๋กœ ์บก์Аํ™”ํ•˜๊ณ , ๋™์ผํ•œ ๋ชฉ์ ์„ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด์—์„œ ๊ต์ฒด๋˜๋ฉด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด์— ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋А์Šจํ•œ ์—ฐ๊ฒฐ(Decoupling)์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ฃ . ๋А์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ€ํ•˜๊ฒŒ ๋  ๋•Œ, ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด, ์บก์Аํ™”๋œ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งŒ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •๋˜๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”์ง€ ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด๋Š” ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ.. ๊ณต๊ฐ์ˆ˜ 4 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 2.
  • [Feedback Assistant] ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ๋ฏธ์„ธํ•˜์ง€๋งŒ ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๋ฌธ์„œ์— ๊ธฐ์—ฌํ•˜๊ฒŒ ๋˜์–ด์„œ ๊ทธ ๊ณผ์ •์„ ๊ณต์œ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ์ง„์งœ ๋ฏธ์„ธํ•ด์„œ ์ข€ ์ฐฝํ”ผํ•˜๊ธด ํ•˜์ง€๋งŒ ๊ฝค๋‚˜ ํŠน๋ณ„ํ•œ ๊ฒฝํ—˜์ด์—ˆ์–ด์š”ใ…Žใ…Ž ๊ณ„๊ธฐ ์ด์ „์— CALayer์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์“ฐ๋ฉด์„œ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ๋ณด๋Š”๋ฐ ์˜ˆ์ œ ์ฝ”๋“œ์— ์ค„ ๋ฐ”๊ฟˆ์ด ์•ˆ๋˜์–ด ์žˆ์–ด์„œ ๊ดœ์‹œ๋ฆฌ ๊ฑฐ์Šฌ๋ ค์„œ "์ด๊ฑฐ ๋ฆฌํฌํŠธ ํ•  ์ˆ˜ ์—†๋‚˜?"๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์„œ documentation์— ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋‚˜ ๊ฑด์˜์‚ฌํ•ญ์„ ๋ฆฌํฌํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋Š”์ง€ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํ”ผ๋“œ๋ฐฑ ๋ช‡ ๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ค๊ฐ€ Feedback Assistant๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”, ํŽ˜์ด์ง€์— ์ ‘์†ํ•ด๋ณด๋‹ˆ ๊ฐœ๋ฐœ์ž ํ”ผ๋“œ๋ฐฑ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ๋”ฐ๋กœ ๋งˆ๋ จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ํ”ผ๋“œ๋ฐฑ ์ž‘์„ฑ.. ๊ณต๊ฐ์ˆ˜ 8 ๋Œ“๊ธ€์ˆ˜ 0 2022. 2. 1.
  • ํ‚ค์›Œ๋“œ๋กœ ๋Œ์•„๋ณด๋Š” 2021๋…„๊ณผ 2022๋…„์˜ ๋ชฉํ‘œ ์กธ์—… 2021๋…„ 1ํ•™๊ธฐ๋ฅผ ๋์œผ๋กœ ํ•œ๋™๋Œ€ํ•™๊ต๋ฅผ ์กธ์—…ํ–ˆ๋‹ค. 1ํ•™๋…„ ๋•Œ๋Š” ๋ฌด์ „๊ณต, 2ํ•™๋…„์—๋Š” ์ƒ๋‹ด์‹ฌ๋ฆฌ, ๊ตฐ๋ณตํ•™ ํ›„ ์ปดํ“จํ„ฐ๊ณตํ•™์„ ์ „๊ณตํ•ด์„œ ์ด 9ํ•™๊ธฐ ๋™์•ˆ ํ•™๊ต๋ฅผ ๋‹ค๋…”๋‹ค. ์กธ์—…์„ ํ•˜๋ฉด์„œ ๋ง‰๋ง‰ํ•˜๊ธฐ๋„ ํ•˜๊ณ , ํ›„๋ จํ•˜๊ธฐ๋„ ํ–ˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ดŒ๊ตฌ์„์— ์žˆ๋Š” ์ž‘์€ ํ•™๊ต๋ฅผ ์„ ํƒํ•  ๋•Œ๋Š” ์ด๋ž˜๋„ ๋˜๋‚˜ ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ•œ๋™์—์„œ ๋„ˆ๋ฌด๋‚˜ ์ข‹์€ ์‚ฌ๋žŒ๋“ค๊ณผ ํ–‰๋ณตํ•œ ์‹œ๊ฐ„๋“ค์„ ๋ณด๋ƒˆ๊ณ , ์ปดํ“จํ„ฐ๊ณตํ•™์ด๋ผ๋Š” ์ ์„ฑ์— ๋งž๋Š” ์ „๊ณต์„ ์ฐพ๊ฒŒ ๋œ ๊ฒƒ๋„ ํ•œ๋™์ด์—ˆ๊ธฐ์— ๊ฐ€๋Šฅํ–ˆ๋‹ค. ์„œ๋น„์Šค ๋ฐฐํฌ ๋‚ด ์ธ์ƒ์˜ ์ฒซ ๋ฒˆ์งธ ์„œ๋น„์Šค๋ผ๊ณ  ํ•  ๋ฒ•ํ•œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ–ˆ๋‹ค. ํ•œ๋™์ƒˆ์„ฌ๋ด‡์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ทธ๋ƒฅ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋Š” ๋งˆ์Œ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ์นด์นด์˜ค์—์„œ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” API ์„œ๋ฒ„๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜์—ˆ๋‹ค. ๋žฉ์‹ค ์นœ๊ตฌ๋“ค์ด ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ํ•ด์ฃผ์–ด์„œ ์˜ˆ์˜๊ฒŒ ์„œ๋น„์Šค๊ฐ€ ๋งŒ๋“ค.. ๊ณต๊ฐ์ˆ˜ 11 ๋Œ“๊ธ€์ˆ˜ 5 2022. 1. 30.
  • ์ทจ์—…์ค€๋น„๋ฅผ ๋งˆ์น˜๋ฉฐ ์ ๋Š” ํšŒ๊ณ  2021๋…„์€ ์ทจ์—…์œผ๋กœ ๊ฐ€๋“ํ•œ ํ•œ ํ•ด์˜€๋‹ค. 2021๋…„์˜ ํšŒ๊ณ ๋ฅผ ์ ์–ด๋ณผ๊นŒ ํ•˜๋‹ค๊ฐ€, ์ด ๊ธ€์—์„œ๋Š” ์ทจ์—…์— ๋Œ€ํ•œ ํšŒ๊ณ ๋งŒ ์ ๊ณ  ์ž‘๋…„ ์ „์ฒด์— ๋Œ€ํ•œ ํšŒ๊ณ ๋Š” ๋”ฐ๋กœ ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์‹ค ๊ธ€์„ ์ ๋‹ค ๋ณด๋ฉด ์ด๋Ÿฐ ์ด์•ผ๊ธฐ ์ €๋Ÿฐ ์ด์•ผ๊ธฐ๋“ค์ด ์„ž์ด๋ฉด์„œ ์งฌ๋ฝ•์ด ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ. 2020๋…„ 10์›” ~ 2021๋…„ 2์›”: ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋ฆฌ๊ฐ€ ๋งŽ๋Œ€.. ๋‚ด ์ทจ์—… ์ค€๋น„๋Š” ํ•™๊ต ์‚ฌ์—…๋‹จ์—์„œ ์›น ๊ฐœ๋ฐœ์ž๋กœ ์ž ๊น ์ผ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘๋๋‹ค. ์–ด๋–ค ์ง๋ฌด๋กœ ์ทจ์—…์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ์—†์—ˆ๋‹ค. ์ œ์ผ ์žฌ๋ฐŒ๊ฒŒ ๊ฐœ๋ฐœํ–ˆ์„ ๋•Œ๊ฐ€ ํ”Œ๋Ÿฌํ„ฐ๋กœ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๊ฐœ๋ฐœํ–ˆ์„ ๋•Œ์˜€๋Š”๋ฐ, ์กธ์—…์„ ์ฝ”์•ž์— ๋‘๊ณ  ์ด์ œ ์™€์„œ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ์—๋Š” ๋ถ€๋‹ด์ด ๋˜์—ˆ๊ณ , ํ”Œ๋Ÿฌํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ์—๋Š” ํ”Œ๋Ÿฌํ„ฐ๋กœ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์—…์ด ํ•œ์ •๋˜์–ด ์žˆ๋‹ค๊ณ  ๋А๊ผˆ๋‹ค. ํ•œ์ฐฝ ๊ณ ๋ฏผ์„ ํ•˜๋˜ ์ฆˆ์Œ์— ์—ฐ๊ตฌ์‹ค ์ง€๋„๊ต์ˆ˜๋‹˜์ด ๊ต๋‚ด ์‚ฌ์—…๋‹จ.. ๊ณต๊ฐ์ˆ˜ 49 ๋Œ“๊ธ€์ˆ˜ 15 2022. 1. 28.
  • [RxSwift] subscribe์˜ ๋™์ž‘์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ RxSwift์˜ ๊ตฌ๋…์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์งˆ๊นŒ? ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์˜ต์ €๋ฒ„๋ธ”์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜๋Š”์ง€ create ๋ฉ”์„œ๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ณด๋ฉด์„œ ์ •์˜ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ subscribe๋ฅผ ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์ง€๋‚œ ํฌ์ŠคํŠธ๋ฅผ ์ฝ์œผ๋ฉด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ™•์ธํ•ด๋ณด์„ธ์š”! [RxSwift] Disposables.create() ์™œ ํ•˜์ง€? Disposables.create ๋ถ„์„ํ•ด๋ณด๊ธฐ Rx๋ฅผ ํ•˜๋ฉด์„œ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์˜๋ฌธ.. let numbers = Observable .create { observer in observer.onNext(1) observer.onNext(2) observer.onNext(2) return Disposables.create() } ์—ฌ.. jeonyeohun.tistory.c.. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 3 2022. 1. 24.
  • [RxSwift] Observable.create์˜ ๋™์ž‘์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ Observable.create Observable์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ง„์งœ ๋งŽ์ด ์“ฐ๋Š” create ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ create์— ํด๋กœ์ €๋ฅผ ์ „๋‹ฌํ•˜๊ณ  Observable์„ ๋ฐ˜ํ™˜๋ฐ›์Šต๋‹ˆ๋‹ค. let observable = Observable.create { observer in observer.onNext(1) observer.onCompleted() return Disposables.create() } observable.subscribe(...) ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉํ–ˆ์—ˆ์ฃ . ๊ทธ๋Ÿผ ์–ด๋–ค ๊ณผ์ •์œผ๋กœ Observable์ด ์ƒ์„ฑ๋˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค! ๊ฐœ์ธ์ ์œผ๋กœ RxSwift๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธด ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ์š”, ๋‚ด๋ถ€์ ์œผ๋กœ ์›์ž์ ์—ฐ์‚ฐ์ด๋‚˜ ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ๋ถ€์กฑํ•˜์ง€๋งŒ ํ•ต์‹ฌ์ ์ธ ๋กœ์ง์„.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 23.
  • [Swift] strong, weak, unowned์˜ ๋น„๋ฐ€ ๋ž˜ํผ๋Ÿฐ์Šค ์นด์šดํŠธ ์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ swift์—์„œ ๋ž˜ํผ๋Ÿฐ์Šค ์นด์šดํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋ธ”๋กœ๊ทธ์—์„œ weak๊ณผ unowned์˜ ์ฐจ์ด๋ฅผ Optional์˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ผ๊ณ  ๋งํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์‚ฌ์‹ค ํ‹€๋ฆฐ ํ‘œํ˜„์ด์—์š”. Swift 5.0๋ถ€ํ„ฐ๋Š” Unowned Optional์ด ์ถ”๊ฐ€๋˜์–ด์„œ unowned๋„ ์˜ต์…”๋„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋” ๋กœ์šฐ ๋ ˆ๋ฒจ๋กœ ๊ฐ€๋ฉด ๋ž˜ํผ๋Ÿฐ์Šค ์นด์šดํŒ…๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ์— ์žˆ์–ด์„œ ๋ถ„๋ช… ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , GitHub - apple/swift: The Swift Programming Language The Swift Programming Language. Contribute to apple/swift development by creating an accoun.. ๊ณต๊ฐ์ˆ˜ 18 ๋Œ“๊ธ€์ˆ˜ 1 2022. 1. 23.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #122 2022.01.21 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ฉด์ ‘ ์ค€๋น„ - Rx ๋œฏ์–ด๋ณด๊ธฐ ์•Œ์—‘์Šค์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„๋งŒ์„ ๊ณจ๋ผ์„œ ๊ธฐ์กด ๊ณต์‹ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๋”ฐ๋ผ ๋งŒ๋“ค์–ด๋ดค๋‹ค. ์ด์ œ์„œ์•ผ subscribe๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, create๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ฒŒ ๋๋‹ค. ๋ ˆํฌ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค! GitHub - jeonyeohun/Understanding-RxSwift-internals: ์ฝ๋‹ค๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋˜๋Š” ์•Œ์—‘์Šค ๐Ÿ‘€ ์ฝ๋‹ค๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋˜๋Š” ์•Œ์—‘์Šค ๐Ÿ‘€. Contribute to jeonyeohun/Understanding-RxSwift-internals development by creating an account on GitHub. github.com ๋ฉ”์ดํŠธ๋Ÿฌ๋„ˆ์™€ ๋น„๋ฒ„์Šค์˜ 3์‹œ๊ฐ„์— ๊ฑธ์นœ ํž๋ง์Šคํฌ๋Ÿผ์œผ๋กœ ํ•˜๋ฃจ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค. ์˜ค.. ๊ณต๊ฐ์ˆ˜ 3 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 22.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #121 2022.01.20 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ฉด์ ‘๋ณด๊ธฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฐ€๋ณ๊ฒŒ ๊ณต๋ถ€ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ iCloud์— ๋ฐฑ์—…์ด ์•ˆ๋˜๋Š”๋ฐ ์• ๋“ค์€ ์•ฑ ๋ฒˆ๋“ค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์บ์‹œ, temp ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค. ์•ฑ์ด ์„ค์น˜๋  ๋•Œ ์ธ์Šคํ†จ๋Ÿฌ๋Š” ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด๋ถ€์— ์ปจํ…Œ์ด๋„ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค. ๋ฒˆ๋“ค ์ปจํ…Œ์ด๋„ˆ, ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ ๋“ฑ๋“ฑ. temp ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ์•ฑ์ด Not Running ์ƒํƒœ์ผ ๋•Œ ์‹œ์Šคํ…œ์— ์˜ํ•ด ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋‹ค. ๋‹คํ๋จผํŠธ์— ์ €์žฅํ• ์ง€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ €์žฅํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ• ์ง€ ๋ง์ง€์— ๋”ฐ๋ผ ๊ฒฐ์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋” ์‹ฌํ”Œํ•˜๊ฒŒ๋Š” ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹คํ๋จผํŠธ์— ์ €์žฅํ•˜๊ณ , ์•ฑ์—์˜ํ•ด ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ €์žฅํ•˜๋ฉด๋œ๋‹ค. ์ฝ”์–ด๋ฐ์ดํ„ฐ์˜ ํŒŒ์ผ๋“ค์€ ๋ชจ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ .. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 21.
  • [iOS] ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค์™€ iOS์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ App Sandbox + File System ์˜ค๋Š˜์€ ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ •๋ฆฌํ•ด๋ณด๊ณ  ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด๋ถ€์—์„œ ํŒŒ์ผ๋“ค์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•˜๋Š” ๋ฌธ์„œ๋Š” File System Programming Guide์™€ App Sandbox Design Guide์ธ๋ฐ์š”, ์ƒŒ๋“œ๋ฐ•์Šค ๋ฌธ์„œ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” MacOS๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด์„œ ๋„ˆ๋ฌด ๊นŠ๊ฒŒ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ์ƒŒ๋“œ๋ฐ•์Šค์˜ ๊ฐœ๋…์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Š” ์šฉ๋„๋กœ ๋ณด๋ ค๊ณ  ํ•ด์š”. ๋ฌธ์„œ ์ž์ฒด๊ฐ€ 2016๋…„์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์–ด์„œ ์‹ ๋ขฐ๋„๋„ ๋†’์ง€ ์•Š๊ตฌ์š”. ๊ทธ๋Ÿผ ํ•˜๋‚˜์”ฉ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! App Sandbox ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค๋Š” ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ์•ฑ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ์ˆ ์ด์—์š”. ์•ฑ ์ƒŒ๋“œ๋ฐ•์Šค์˜ ๋ชฉ์ ์€ ์•ฑ์ด ์†์ƒ๋˜.. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 2 2022. 1. 21.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #120 2022.01.19 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ฉด์ ‘๋ณด๊ธฐ ๋ฉด์ ‘์ค€๋น„ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ์˜ค๋Š˜์€ ๋ฉด์ ‘๊ณผ ๋ฉด์ ‘์ค€๋น„๋กœ ๊ณต๋ถ€๋Š” ์ œ๋Œ€๋กœ ๋ชปํ–ˆ๋‹ค. ์˜ค๋Š˜ ๋А๋‚€ ๊ฒƒ. ์• ํ”Œ ๊ฐœ๋ฐœ์ž ์•„์นด๋ฐ๋ฏธ ๋ฉด์ ‘์„ ๋ณด๊ฒŒ๋˜์—ˆ๋‹ค. ์‚ฌ์‹ค ์ด์ œ๋Š” ๊ต์œก์ด ์•„๋‹ˆ๋ผ ์‹ค๋ฌด๋ฅผ ํ•ด์•ผํ•  ๋•Œ๋ผ๊ณ  ๋А๋ผ๊ณ  ์žˆ์–ด์„œ ์ง€์›ํ•˜์ง€ ์•Š์„ ์ƒ๊ฐ์ด์—ˆ๋Š”๋ฐ ์ทจ์—…์ด ์•ˆ๋ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ + ์†”์งํžˆ ์ง„์งœ ์žฌ๋ฐŒ์–ด ๋ณด์—ฌ์„œ ์ง€์›ํ–ˆ๋‹ค. ๋””์ž์ด๋„ˆ๋„ ์žˆ๊ณ  ๊ธฐํš์ž๋„ ์žˆ์œผ๋‹ˆ๊นŒ ๋‚œ ์ง„์งœ ๊ฐœ๋ฐœ์—๋งŒ ๋ชฐ์ž…ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ. ๋ฉด์ ‘์€ ์‚ฌ์‹ค ๋ญ˜ ์ค€๋น„ํ•ด์•ผํ• ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๊ณ  ํ•ด์„œ ์ด๋ ฅ์„œ ๋ƒˆ๋˜ ๊ฒƒ๋งŒ ๋‹ค์‹œ ์ž˜ ๋ณด๊ณ  ๊ฐ€์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ํ˜น์‹œ๋ผ๋„ ์ž˜ ๋˜์–ด๋„ ๊ณ ๋ฏผ์ด๋‹ค. ๋‚˜ ์„ค๋งˆ ๋‹ค์‹œ ํฌํ•ญ ๊ฐ€..? ์˜ค๋Š˜ ๋ฉด์ ‘์—์„œ CTO๋‹˜๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ๋Š”๋ฐ, ์ง„์งœ ๋ถ™์œผ๋ฉด ๋‹ค๋ฅธ ๊ณณ์€ ๋‹ค ํฌ๊ธฐํ•˜๊ณ  ์—ฌ๊ธฐ์„œ ์ผํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค.. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 19.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #119 2022.01.18 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. ๋ฉด์ ‘์ค€๋น„ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ์˜ค๋Š˜์€ ๋ฉด์ ‘์ค€๋น„๋ฅผ ํ•˜๋А๋ผ ์ƒˆ๋กœ์šด ์ง€์‹์„ ๊ณต๋ถ€ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค. ๋Œ€์‹  ๋‚˜์ค‘์— ์ฝ์–ด๋ณผ ๊ธ€๋“ค์„ ์ฐœํ•ด๋‘์—ˆ๋‹ค. Use Swift Struct For Total Immutability The many ways to prevent mutability of Swift’s struct medium.com Why a Good Swift Developer Doesn’t Need to Know a Ton of Patterns “I prefer to use MVVM.” “No Viper would be better in this scenario.” “No, I think that MVC is best in all circumstances.” medium.. ๊ณต๊ฐ์ˆ˜ 3 ๋Œ“๊ธ€์ˆ˜ 4 2022. 1. 19.
  • [iOS] ๋ฉ”์ดํŠธ๋Ÿฌ๋„ˆ: ๋ฐ˜์ชฝ์งœ๋ฆฌ ์ด๋ฏธ์ง€ ์บ์‹œ ๊ฐœ์„ ํ•˜๊ธฐ ๋ฉ”์ดํŠธ ๋Ÿฌ๋„ˆ ์•ฑ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊ณต์œ ํ•˜๋Š” ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค! GitHub - boostcampwm-2021/iOS06-MateRunner: ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ ํ•จ๊ป˜ ๋‹ฌ๋ฆฌ๋Š” ์ฆ๊ฑฐ์›€, Mate Runner ๐Ÿƒ๐Ÿป‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ. Contribute to boostcampwm-2021/iOS06-MateRunner development by creating an account on GitHub. github.com ์—ฌ๊ธฐ์„œ ์ €ํฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”! ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ถฉ๊ฒฉ๊ณผ ๊ณตํฌ.. ๋‚ด๊ฐ€ ๋งŒ๋“  ์ด๋ฏธ์ง€ ์บ์‹ฑ์€ ๋ฐ˜์ชฝ์งœ๋ฆฌ์˜€๋‹ค! ๋ฟŒ๋“ฏํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋Š” ๋งˆ์น˜๊ณ  ํ•œ๋‹ฌ์ด ๋„˜์–ด์„œ์•ผ ๊ตฌํ˜„ํ–ˆ๋˜ ์ด๋ฏธ์ง€ ์บ์‹ฑ์˜ ๋ฌธ์ œ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.. ์˜ค๋Š˜์€ ์–ด๋–ค ๋ฌธ์ œ์ ๋“ค์ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด.. ๊ณต๊ฐ์ˆ˜ 7 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 18.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #118 2022.01.16 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. Disposables.create ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ Rx ๊ณต๋ถ€ ๋ฉด์ ‘ ์ค€๋น„ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. Extension์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์˜ ์ข…๋ฅ˜๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ์Šคํƒœํ‹ฑ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์ด๋‹ค. ํƒ€์ž… ํด๋ž˜์Šค ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ์ถ”๊ฐ€๊ฐ€ ์•ˆ๋จ. ํ”„๋กœํ† ์ฝœ์˜ extension์—๋Š” ์Šคํƒœํ‹ฑ ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋„ ์ถ”๊ฐ€๊ฐ€ ์•ˆ๋œ๋‹ค. ํด๋กœ์ €์™€ ๊ฐ’ ์บก์ณ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ๋ฒจ ์ง€์‹์„ ์•„์ฃผ ์ž์„ธํžˆ ์จ๋†“์€ ๋‹ต๋ณ€์ด ์žˆ๋‹ค. ๋‚ด์ผ ์ฝ์–ด๋ด์•ผ๊ฒ ๋‹ค. Swift function object wrapper in apple/swift After reading: https://github.com/rodionovd/SWRoute/wiki/Function-hooking-in-Swift https://github.c.. ๊ณต๊ฐ์ˆ˜ 3 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 17.
  • [RxSwift] Disposables.create() ์™œ ํ•˜์ง€? Disposables.create ๋ถ„์„ํ•ด๋ณด๊ธฐ Rx๋ฅผ ํ•˜๋ฉด์„œ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์˜๋ฌธ.. let numbers = Observable.create { observer in observer.onNext(1) observer.onNext(2) observer.onNext(2) return Disposables.create() } ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์— Disposables.create()๋ฅผ ์™œ ํ•˜์ง€?? ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ "๋ฐ˜ํ™˜ํƒ€์ž…์ด Disposable ์ด๋‹ˆ๊นŒ"๋Š” ๋ง์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ด๋ฒˆ์—๋„ ์˜์‹์˜ ํ๋ฆ„๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋œฏ์–ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. Disposables ๋จผ์ € Disposables.create๋‹ˆ๊นŒ ํƒ€์ž… ๋ฉ”์„œ๋“œ์ธ ๊ฒƒ ๊ฐ™์•„์„œ Disposables๋ฅผ ์ฐพ์•„๋ณด๊ธฐ๋กœ ํ–ˆ์–ด์š”. Rx ์ €์žฅ์†Œ์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด Disposables๋ผ๋Š” ๋””๋ ‰.. ๊ณต๊ฐ์ˆ˜ 6 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 16.
  • ์˜ค๋Š˜์˜ ๋ฐฐ์›€ #117 2022.01.15 ์˜ค๋Š˜์˜ ๋ฐฐ์›€ ์˜ค๋Š˜ ํ•œ ์ผ. CALayer ์ •๋ฆฌํ•˜๊ธฐ - ์ด์ œ ์ข€ ์ดํ•ด๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฉด์ ‘์ค€๋น„ - Rx ๊ณต๋ถ€ ์˜ค๋Š˜ ์ƒˆ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ. ๋ทฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์‚ฌ์šฉํ•  CALayer์˜ ํƒ€์ž…์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. layerClass ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ทฐ์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์›ํ•˜๋Š” ๋ ˆ์ด์–ด ํด๋ž˜์Šค์˜ ๋ฉ”ํƒ€ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค. UIView๋Š” CALayer์˜ delegate ๊ฐ์ฒด์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” CALayerDelegate์— ๋‘ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๋‘ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•ด์•ผํ•˜๋Š” ์ผ์€ CALayer์— ํ™”๋ฉด์— ๊ทธ๋ฆฐ ์ปจํ…์ธ ๋ฅผ ๋น„ํŠธ๋งต์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์™œ ์ด๋ ‡๊ฒŒ ํ•˜๋ƒ๋ฉด CALayer๋Š” ์ง์ ‘ ๊ทธ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋น„ํŠธ๋งต์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๊ฑธ ์บ์‹ฑํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ํ™”๋ฉด์— ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. .. ๊ณต๊ฐ์ˆ˜ 2 ๋Œ“๊ธ€์ˆ˜ 0 2022. 1. 16.
    ๋ฌธ์˜์•ˆ๋‚ด
    • ํ‹ฐ์Šคํ† ๋ฆฌ
    • ๋กœ๊ทธ์ธ
    • ๊ณ ๊ฐ์„ผํ„ฐ

    ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ์นด์นด์˜ค์—์„œ ์‚ฌ๋ž‘์„ ๋‹ด์•„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ยฉ Kakao Corp.