์•„ํ‚คํƒ์ฒ˜ ํŒจํ„ด๊ณผ ๋””์ž์ธ ํŒจํ„ด์˜ ์ฐจ์ด์ 

์•„ํ‚คํƒ์ฒ˜ ํŒจํ„ด๊ณผ ๋””์ž์ธ ํŒจํ„ด์˜ ์ฐจ์ด์ 

๊ฐœ๋ฐœํ•˜๋ฉด์„œ MVVM, MVC MVP ๋“ฑ๋“ฑ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์–ด๋–ค ๊ธ€์„ ๋ณด๋ฉด "๋””์ž์ธ ํŒจํ„ด์˜ ํ•œ ์ข…๋ฅ˜"์ผ ๋ฟ์ด๋‹ค. ๋ž€ ๊ธ€๋„ ์žˆ๊ณ , ์–ด๋–ค๊ณณ์—์„œ๋Š” ์•„ํ‚คํƒ์ฒ˜๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ํ•˜๊ณ .. ๊ฐœ์ธ์ ์œผ๋กœ ์ฐจ์ด์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ํ•„์š”ํ•ด์„œ ๊ธ€์„ ๋‚จ๊ธฐ๊ฒŒ ๋˜์—ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด vs. ๋””์ž์ธ ํŒจํ„ด ๋ฒ”์œ„์™€ ์ดˆ์  ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ, ์•„์ด๋””์–ด์˜ ์ถ”์ƒ์ ์ธ ๊ด€์ ์— ๋” ์ดˆ์  ๋งž์ท„๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์€ ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ด€๋ จ ์ž‘์—…์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ตฌํ˜„ ๊ด€์ ์— ์ดˆ์ ์„ ๋‘”๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณต. ์ •์˜์˜ ์ˆ˜์ค€ ๋””์ž์ธ ํŒจํ„ด์€ ์„ธ๋ถ€์ ์ธ ์ˆ˜์ค€์—์„œ ์ •์˜๋˜๋Š” ๋ฐ˜๋ฉด, ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ๋ณด๋‹ค ๊ณ ์ˆ˜์ค€์—์„œ ์ •์˜. ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋‚˜์˜ ..

  • textsms
ios17.1 ์—…๋ฐ์ดํŠธ ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ

ios17.1 ์—…๋ฐ์ดํŠธ ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š”! ์ด๋ฒˆ ios17.1 ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.AirDrop์—์–ด๋“œ๋ž์„ ํ•˜๊ณ  ๋‚œ ํ›„ AirDrop ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๊ณ„์†ํ•ด์„œ ์ฝ˜ํ…์ธ  ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋Š๊ธฐ๋Š” ์ผ์ด ๋œ ํ• ๊ฑฐ ๊ฐ™๋„ค์š”. ์Šคํƒ ๋ฐ”์ด๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ๋„๋Š” ์‹œ๊ฐ„์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์ƒˆ๋กญ๊ฒŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค ์ž ๊ธˆํ™”๋ฉด์ž ๊ธˆ ํ™”๋ฉด์—์„œ ์‚ฌ์ง„ ์…”ํ”Œ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ํŠน์ • ์•จ๋ฒ”์„ ์„ ํƒํ•˜๋Š” ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค ์Šคํฌ๋ฆฐํƒ€์ž„์„ค์ •์ด ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ๋™๊ธฐํ™”๋˜๋„๋ก ์•ˆ์ •์„ฑ์ด ํ•œ์ธต ๊ฐ•ํ™” ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๊ธฐํƒ€ ๋ฒ„๊ทธ ์ˆ˜์ •โ€ข ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ํ†ตํ™” ์ค‘์ผ ๋•Œ ์ฐฉ์‹  ์ „ํ™”์˜ ๋ฐœ์‹ ์ž ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ โ€ข ์‚ฌ์šฉ์ž ์„ค์ • ๋ฒจ์†Œ๋ฆฌ์™€ ๊ตฌ์ž…ํ•œ ๋ฒจ์†Œ๋ฆฌ๊ฐ€ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์Œ์˜ ์˜ต์…˜์œผ๋กœ ๋‚˜ํƒ€ ๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ โ€ข ํ‚ค๋ณด๋“œ ๋ฐ˜์‘ ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ..

  • textsms
Designing For WatchOS(WatchOS์šฉ ๋””์ž์ธ)

Designing For WatchOS(WatchOS์šฉ ๋””์ž์ธ)

๋””์Šคํ”Œ๋ ˆ์ด: ๊ฐ€๋…์„ฑ, ๊ณ ํ•ด์ƒ๋„ ์ธ์ฒด๊ณตํ•™: ํ™”๋ฉด์—์„œ ํ•œ ๋ฐœ ์ •๋„ ๋–จ์–ด์ ธ ์žˆ์Œ ๋ฐ˜๋Œ€ ์†์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉ Always On Display ์ž…๋ ฅ: ๋””์ง€ํ„ธ ํฌ๋ผ์šด์„ ์ด์šฉํ•œ ์ˆ˜์ง ํƒ์ƒ‰ ๋ฐ์ดํ„ฐ ๊ฒ€์‚ฌ, ์‹œ๊ณ„ ํŽ˜์ด์Šค ํ™ˆ ํ™”๋ฉด ๋ฐ ์•ฑ ๋‚ด์—์„œ ์ผ๊ด€๋œ ์ œ์–ด ํ„ฐ์น˜์Šคํฌ๋ฆฐ ์ œ์Šค์ฒ˜ ์•ก์…˜๋ฒ„ํŠผ GPS, ํ˜ˆ์ค‘ ์‚ฐ์†Œ, ์‹ฌ์žฅ ๊ธฐ๋Šฅ ๊ฐ์ง€ ์„ผ์„œ, ์•Œํ‹ฐ๋ฏธํ„ฐ, ๊ฐ€์†๋„๊ณ„, ์ž์ด๋กœ์Šค์ฝ”ํ”„ ๋ฐ์ดํ„ฐ ํ™œ์šฉ ์•ฑ ์ƒํ˜ธ ์ž‘์šฉ: ํ•˜๋ฃจ ๋‚ด๋‚ด ์ผœ์ง„ ๋””์Šคํ”Œ๋ ˆ์ด ์ž์ฃผ ๋ด„ 1๋ถ„ ๋ฏธ๋งŒ ์ง€์†๋˜๋Š” ๊ฐ„๊ฒฐํ•œ ์•ฑ ์ƒํ˜ธ ์ž‘์šฉ ์ปดํ”Œ๋ฆฌ์ผ€์ด์…˜, ์•Œ๋ฆผ, Siri ์ƒํ˜ธ์ž‘์šฉ ์ž์ฃผ ์‚ฌ์šฉํ•จ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ: ์ต์ˆ™ํ•˜๊ณ  ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”๋ฐ ๋„์›€์„ ์คŒ WatchOS์—์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฝํ—˜์„ ์„ ์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ œ๊ณต, ๊ฐ„๋‹จํ•œ ์ œ์Šค์ฒ˜๋กœ ํ•˜๋‚˜ ๋˜๋Š” ๋‘๊ฐœ๋กœ ๋ชฉํ‘œ ์ง€ํ–ฅ์ ์ธ ..

  • textsms

Designing For iOS (iOS์šฉ ๋””์ž์ธ)

๋””์Šคํ”Œ๋ ˆ์ด: ์ค‘๊ฐ„ํฌ๊ธฐ์˜ ๊ณ ํ•ด์ƒ๋„๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ. ์ธ์ฒด๊ณตํ•™: ํ•œ์† ๋˜๋Š” ์–‘์†, ๊ฐ€๋กœ ๋˜๋Š” ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ํ™”๋ฉด ์ „ํ™˜, 1~2ํ”ผํŠธ(30~60cm) ์ž…๋ ฅ: ๋ฉ€ํ‹ฐํ„ฐ์น˜ ์ œ์Šค์ฒ˜, ํ™”๋ฉด ํ‚ค๋ณด๋“œ, ์Œ์„ฑ ์ œ์–ด, ๊ฐœ์ธ ๋ฐ์ดํ„ฐ ๋ฐ ์žฅ์น˜์˜ ์ž์ด๋กœ์Šค์ฝ”ํ”„, ๊ฐ€์†๋„๊ณ„ ์ž…๋ ฅ, ๊ณต๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ ๋””์ž์ธ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š๊ปด์ง€๋„๋ก ํ•˜๊ธฐ์œ„ํ•œ ๋ฐฉ๋ฒ• ํ™”๋ฉด ์ƒ์— ํ‘œ์‹œ๋˜๋Š” ์ปจํŠธ๋กค์˜ ์ˆ˜๋ฅผ ์ œํ•œ, ๋ณด์กฐ ์„ธ๋ถ€ ์ •๋ณด ๋ฐ ์ž‘์—…์„ ์ตœ์†Œํ™” ๋””๋ฐ”์ด์Šค ๋ฐฉํ–ฅ, ๋‹คํฌ ๋ชจ๋“œ, ๋‹ค์ด๋‚˜๋ฏน ํƒ€์ž… ์™ธ๊ด€ ๋ณ€ํ™”์— ์‹ ์†ํ•˜๊ฒŒ ๋ณ€ํ™˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋””๋ฐ”์ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์žก๊ณ  ์žˆ๋Š”์ง€ ๊ณ ๋ ค (์˜ˆ: ํ™”๋ฉด ์ค‘๊ฐ„ ๋˜๋Š” ํ•˜๋‹จ์— ์ปจํŠธ๋กค ์œ„์น˜ ํ• ๋•Œ ๋™์ž‘์ด ๋” ์‰ฌ์›€) ์‚ฌ์šฉ์ž ๊ฐœ์ธ ์ •๋ณด ํ—ˆ๋ฝ๋ฐ›๊ธฐ (์œ„์น˜, ์ƒ์ฒด ์ธ์ฆ ์‚ฌ์šฉ ๋“ฑ.)

  • textsms

modalPresentationStyle .fullScreen๊ณผ .overFullScreen์˜ ์ฐจ์ด์ 

modalPresentationStyle์˜ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘ .fullScreen์€ ๋ชจ๋‹ฌ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ „์ฒด ํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜๋ฉฐ, ๋ถ€๋ชจ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋ชจ๋‹ฌ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ™”๋ฉด ์ „์ฒด๋ฅผ ์ฐจ์ง€ํ•˜์—ฌ ๋ถ€๋ชจ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, .overFullScreen์€ ๋ชจ๋‹ฌ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ „์ฒด ํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, ๋ถ€๋ชจ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์—ฌ์ „ํžˆ ๋ณด์ด๋ฉฐ, ์ผ๋ถ€ ์ฝ˜ํ…์ธ ๊ฐ€ ์—ฌ์ „ํžˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋‹ฌ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ „์ฒด ํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, ๋ถ€๋ชจ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ผ๋ถ€ ์ฝ˜ํ…์ธ ๊ฐ€ ์—ฌ์ „ํžˆ ๋ณด์ด๋ฉฐ ๋ฐฐ๊ฒฝ์€ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, .fullScreen์€ ๋ชจ๋‹ฌ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ „์ฒด ํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜๋ฉฐ, ๋ถ€๋ชจ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง€๋Š” ๋ฐ˜๋ฉด์—, .overFullScreen์€ ๋ชจ๋‹ฌ ๋ทฐ ..

  • textsms

Swift 5.1 Static and class subscripts (SE-0254)

Swift 5.1์—์„œ๋Š” static ๋ฐ class subscript๊ฐ€ ๋„์ž…๋˜์–ด ํด๋ž˜์Šค ๋ฐ ๊ตฌ์กฐ์ฒด์—์„œ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ(Subscript)๋ฅผ ์ •์˜ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ๋ฐฐ์—ด ๋“ฑ์˜ ์š”์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋Š” ์ธ์Šคํ„ด์Šค ๋ ˆ๋ฒจ์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Swift 5.1์—์„œ๋Š” static ๋ฐ class ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Static subscript static subscript๋Š” ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์˜ ํƒ€์ž… ์ž์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ธ์Šคํ„ด์Šค ์—†์ด ํƒ€์ž… ์ž์ฒด์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. static subscript๋Š” static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. struct TimesTabl..

  • textsms

reason: 'Don't know about flushed view

iOS์—์„œ addSubView ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๋ทฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์„œ๋ธŒ๋ทฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜์—ˆ๊ฑฐ๋‚˜, ์ด์ „์— ๋‹ค๋ฅธ ๋ทฐ์— ์ถ”๊ฐ€๋˜์—ˆ์„ ๊ฒฝ์šฐ, addSubView๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฏธ ์ œ๊ฑฐ๋œ ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ทฐ๊ฐ€ ์•„์ง ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ์Šˆํผ ๋ทฐ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋ทฐ๋ฅผ ๋ณด์ด๊ฒŒ ํ•˜๊ฑฐ๋‚˜ setNeedsDisplay ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ทฐ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋„๋ก ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ทฐ๊ฐ€ ์Šˆํผ ๋ทฐ์™€ ์ด๋ฏธ ์„œ๋กœ ๋‹ค๋ฅธ ๊ณ„์ธต ๊ตฌ์กฐ์— ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์Šˆํผ ๋ทฐ์™€ ์ƒ๊ด€์—†๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“ค๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋ทฐ..

  • textsms