Delegate? retain์ด ๋ ๊นŒ?

1์ฃผ์ฐจ ์Šคํ„ฐ๋””์—์„œ ๊ณต๋ถ€ํ–ˆ๋˜ "Delegate๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ , Retain์ด ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜์‹œ์˜ค"๋ผ๋Š” ์ฃผ์ œ ์ •๋ฆฌํ•˜๊ธฐ๐Ÿค“Deletate์€ "๋Œ€๋ฆฌ์ž, ์œ„์ž„ํ•˜๋‹ค"๋ผ๋Š” ๋‹จ์–ด์˜ ๋œป์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋ชจ๋“  ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ฒ˜๋ฆฌํ•ด์•ผํ•  ์ผ ์ค‘

2022๋…„ 8์›” 11์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Struct vs Class

Swift ์‹œ์ž‘ํ•  ๋•Œ๋ถ€ํ„ฐ ๊ณ„์† ๋“ค์–ด์™”๋˜ struct vs class๋ฉด์ ‘ ๋‹จ๊ณจ ์งˆ๋ฌธ์ผ๊ฒƒ ๊ฐ™์•„์„œ ์ด๋ฒˆ์— ์Šคํ„ฐ๋””์—์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ ์ •๋ฆฌ๐Ÿ“struct๋Š” ๊ฐ’ ํƒ€์ž…์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ค‘ ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋˜๊ณ , struct๋ฅผ ์ƒˆ๋กœ์šด ํ”„๋กœํ”„ํ‹ฐ์— ํ• ๋‹นํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.๊ฐ™์€

2022๋…„ 8์›” 10์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

[SwiftUI] @Published vs @State

์ด๋ฒˆ์— SwiftUI์™€ MVVM์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Property Wrapper๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด๋ณด์•˜๋Š”๋ฐ, @Published์™€ @State์˜ ๊ฐœ๋…์ด ํ—ท๊ฐˆ๋ ค์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค@Published์™€ @State ๊ฐœ๋…์ด ํ—ท๊ฐˆ๋ ธ๋˜ ์ด์œ ๋Š”, ๋‘˜ ๋‹ค ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ๋กœ ์„ 

2022๋…„ 7์›” 30์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

OAuth

OAuth์˜ ์œ„ํ‚ค๋ฅผ ๋ณด๋ฉด OAuth๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹คOpen Authorization์˜ ์ค„์ž„๋ง๋กœ, ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ ์ƒ์˜ ์ž์‹ ๋“ค์˜ ์ •๋ณด์— ๋Œ€ํ•ด ์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ

2022๋…„ 7์›” 17์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ์›์น™)

๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ (SOLID)์— ์ด์€ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ 2ํƒ„์€ ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ ์ฒด์กฐ ์›์น™์ด๋‹ค ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ ์ฒด์กฐ ์›์น™์€ ๋”ฐ๋ผ ํ•˜๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™์ธ๋ฐ, ๋‹ค์Œ 9๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค ๐Ÿƒโ€โ™€๏ธ ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ ์ฒด์กฐ ์›์น™ ํ•œ ๋ฉ”์„œ๋“œ

2022๋…„ 7์›” 8์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (SOLID)

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์ด๋ผ๋Š”๊ฑด ๋ญ˜๊นŒ?์œ„ํ‚ค๋ฐฑ๊ณผ๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…๋ น์–ด์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์‹œ๊ฐ์—์„œ ๋ฒ—์–ด๋‚˜์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„, ์ฆ‰ ๊ฐ์ฒด๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.๊ฐ์ฒด์ง€

2022๋…„ 6์›” 30์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

Core Data ๊ธฐ๋ณธ

Core DataPersist or cache data on a single device, or sync data to multiple devices with CloudKit.Core Data๋Š” ๋‹จ์ผ ๋””๋ฐ”์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์† ๋˜๋Š” ์บ์‹ฑํ•˜๊ฑฐ๋‚˜, CloudKit์„ ์‚ฌ์šฉํ•ด

2022๋…„ 6์›” 29์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

Localization ์ง€์—ญํ™”

localization์€ ์ง€์—ญํ™” internalization์€ ์„ธ๊ณ„ํ™” ๋ผ๋Š” ๋œป์œผ๋กœ, ๊ฐ๊ฐ L10N๊ณผ I18N์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ง€์—ญํ™” ์ „์— ์„ธ๊ณ„ํ™”๊ฐ€ ๋จผ์ € ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์„ธ๊ณ„ํ™”๊ฐ€ ๋˜์—ˆ๋‹ค๋Š”๊ฑด ์—ฌ๋Ÿฌ ๊ตญ๊ฐ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐํฌ๋œ ์•ฑ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ธ ๊ฒƒ ๊ฐ™

2022๋…„ 6์›” 28์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

UITableViewCell์— Swipe ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

์•„์ดํฐ ๊ธฐ๋ณธ ์–ดํ”Œ์ธ ๋ฉ”๋ชจ๋‚˜ ์•Œ๋žŒ์—์„œ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ swipeํ•˜๋ฉด ๊ณต์œ /์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ,์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ ์šฉํ•ด์•ผํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  Action๋„ ์—ฐ๊ฒฐํ•ด๋ณผ๊ฑฐ๋‹ค.ํ…Œ์ด๋ธ” ๋ทฐ์˜ ๊ฐ cell์— Swipeํ•ด์„œ Action์„ ์„ค์ •ํ•˜๋ ค๋ฉด, UI

2022๋…„ 6์›” 23์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

SwiftUI์—์„œ PropertyWrapper ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป UIKit vs SwiftUI PropertyWrapper์— ๋Œ€ํ•ด์„œ ์–˜๊ธฐํ•˜๊ธฐ ์ „์— ์ž ๊น UIKit๊ณผ SwiftUI๋ฅผ ๋น„๊ต

2022๋…„ 6์›” 23์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

ํ”„๋กœ์ ํŠธ์— NotificationCenter ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ‚ค๋ณด๋“œ๊ฐ€ ํ…์ŠคํŠธ๋ทฐ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ๊ฐ€ ๊ฐ€๋”์žˆ๋Š”๋ฐ, ์ €๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ์ดํ•ด๋ฅผ ์ œ๋Œ€๋กœ ๋ชปํ•˜๊ณ  ์ผ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋•Œ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. - ํ‚ค๋ณด๋“œ๊ฐ€ ํ…์ŠคํŠธ๋ทฐ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ - ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์ง„์ž…

2022๋…„ 6์›” 21์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

CoreAnimation ํ™œ์šฉํ•ด์„œ ๋ฒ„ํŠผ ํšŒ์ „์‹œํ‚ค๊ธฐ

์ €๋ฒˆ์— Core Graphics๋ฅผ ์ด์šฉํ•ด์„œ ๋ฒ„ํŠผ์„ ๊ทธ๋ ค๋ณด๋Š”๊ฑธ ํ–ˆ์—ˆ๋Š”๋ฐ, (CoreGraphics ํ™œ์šฉํ•ด์„œ +๋ฒ„ํŠผ ๊ทธ๋ ค๋ณด๊ธฐ)์ด๋ฒˆ์—๋Š” CoreAnimation์„ ํ™œ์šฉํ•ด์„œ ๊ทธ + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด 40๋„ ํšŒ์ „์‹œ์ผฐ๋‹ค๊ฐ€, ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฑธ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹คCore

2022๋…„ 6์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

CoreGraphics ํ™œ์šฉํ•ด์„œ +๋ฒ„ํŠผ ๊ทธ๋ ค๋ณด๊ธฐ

CoreGraphics๋ฅผ ํ™œ์šฉํ•ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฒ„ํŠผ์— ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด์•˜๋‹ค1๏ธโƒฃ Normal State 2๏ธโƒฃ Selected StateCore Graphics๋Š” ์„ , ๋„ํ˜• ๋“ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” 2์ฐจ์› ๋“œ๋กœ์ž‰ ํˆด์ด๋‹ค. Core Graphics๋Š” Quartz๋ผ๋Š” ๊ทธ๋ž˜ํ”ฝ

2022๋…„ 6์›” 18์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท
post-thumbnail

SwiftLint ์ ์šฉํ•ด๋ณด๊ธฐ

์ƒˆ ํ”„๋กœ์ ํŠธ์— SwiftLint๋ฅผ ์ ์šฉํ•ด๋ณด์•˜๋‹คํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด ํ†ต์ผ๋˜์ง€ ์•Š์œผ๋ฉด ๋ณด๊ธฐ ๋ถˆํŽธํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ..๊ทธ๋•Œ SwiftLint๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋‹ˆ ํŽธ๋ฆฌํ•  ๊ฒƒ ๊ฐ™๋‹คmarisol-MacBookPro desktop % cd ViewDrawing

2022๋…„ 6์›” 14์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท

View Drawing Cycle

์˜ค๋Š˜์€ View Drawing Cycle ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค View Life Cycle์€ ๋“ค์–ด๋ดค์–ด๋„ View Drawing Cycle์€ ์ฒ˜์Œ ๋“ค์–ด๋ดค๋Š”๋ฐ..

2022๋…„ 6์›” 13์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท