๐Ÿง‘๐Ÿป‍๐Ÿ’ผ ํ›„๊ธฐ/๋ฉด์ ‘ํ›„๊ธฐ

[iOS] ์Šคํƒ€ํŠธ์—… ๋ฉด์ ‘ ํ›„๊ธฐ

JerryiOS 2023. 4. 10. 16:23

๊ณต๋ถ€๊ฐ€ ๋งŽ์ด ๋ถ€์กฑํ•ด์„œ ๋ณต๊ธฐ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. 

๊ธฐ์–ต์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์‚ฌ(๋ถˆํ•ฉ๊ฒฉ)

- ์‹œ๋ฆฌ์ฆˆA ์œ ์น˜ ์Šคํƒ€ํŠธ์—…

- ์ค‘์‹, ์•ผ๊ทผ์‹œ ์„์‹ ๋น„์šฉ ์ œ๊ณต

- ์•ผ๊ทผ์‹œ ๊ตํ†ต๋น„ ์ง€์›

- ๊ฑด๊ฐ•๊ฒ€์ง„๋น„ ์ง€์› ๋“ฑ

 

์งˆ๋ฌธ1

Class์™€ Struct์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Class๋Š” ์ฐธ์กฐํ˜•์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™์˜์—ญ์— ์ €์žฅ๋˜๊ณ , Struct๋Š” ๊ฐ’ํ˜•์‹์œผ๋กœ ์Šคํƒ์˜์—ญ์— ๋ณต์‚ฌ๋˜์„œ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ณดํ†ต ์ฃผ๋กœ Class๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜ ์•„๋‹ˆ๋ฉด Struct๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”?

์•„๋ฌด๋ž˜๋„ ์• ํ”Œ์—๋„ Struct๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋Š” ๋งŒํผ ์Šคํƒ์˜์—ญ์— ๋น ๋ฅด๊ฒŒ ์˜ค๋ฅด๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” Struct๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณธ์ ์žˆ๋‚˜์š”?

์•„๋‹ˆ์š”.. ์•„์ง ์‹ ์ž…์ด๋ผ ๊ทธ๋Ÿด ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค..

๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ Struct๋Š” ๋ถ€์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ๊ณ ์žˆ๋‚˜์š”?

์•„์•„.. ์ž˜ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ2

Overloading๊ณผ Overriding์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‚˜์š”?

์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

ํ•ด์•ผํ–ˆ์„ ๋‹ต๋ณ€

Overloading์€ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ ์–ธํ•˜์—ฌ, ํ•˜๋‚˜์˜ ํ•จ์ˆ˜ ์ด๋ฆ„์— ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ๋Œ€์‘์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Overriding์€ ์ƒ์œ„ํด๋ž˜์Šค์˜ ์†์„ฑ/๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ3

GCD์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ๋Š”๋Œ€๋กœ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

DispatchQueue์— ๋Œ€ํ•œ ๋‚ด์šฉ์œผ๋กœ ๋‹ต๋ณ€ํ•ด๋ฒ„๋ ธ์Œ..

ํ•ด์•ผํ–ˆ์„ ๋‹ต๋ณ€

GCD๋Š” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋Š” API์ž…๋‹ˆ๋‹ค.
GCD๋Š” DispatchQueue๋ฅผ ์ด์šฉํ•ด ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
DispatchQueue๋Š” ์•ฑ์˜ ๋ฉ”์ธ์Šค๋ ˆ๋“œ ๋˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—… ์‹คํ–‰์„ ์ˆœ์ฐจ์  ๋˜๋Š” ๋™์‹œ์— ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.
GCD๋Š” ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ4

iOS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ์„๊นŒ์š”?

์ œ๊ฐ€ SwiftUI์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ–ˆ์„ ๋•Œ๋Š” Firebase์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”. ๊ทธ๋Ÿฐ ๋ถ€๋ถ„ ๋ง๊ณ  ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ• ๋•Œ๋Š” ์–ด๋–ค ๋ฐฉ๋ฒ•๋“ค๋กœ ์ €์žฅํ•˜๋‚˜์š”?

๋กœ์ปฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑธ๊นŒ์š”? (๋งž๋‹ค๋ฉด FileManager ๊ด€๋ จํ•˜์—ฌ ๋‹ต๋ณ€๋“œ๋ฆฌ๋ คํ–ˆ์—ˆ์Œ)

์•„๋‡จ. Keychain์ด๋‚˜, UserDefaults, CoreData ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋งํ•˜๋Š” ๊ฑฐ ์˜€์–ด์š”.

์•„.. ์ œ๊ฐ€ ์ž ๊น ํ˜ผ๋™ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
Keychain์€ ๋ณด์•ˆ ๊ด€๋ จ๋œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ์•Œ๊ณ  ์žˆ๊ณ ,
UserDefaults๋Š” ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

UserDefaults๊ฐ€ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„..์ผ๊นŒ์š”?

UserDefaults์—์„œ ์ผ์ •ํ•œ ํฌ๊ธฐ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค๊ณ  ๋ณธ ์ ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜๊ฒŒ ๊ธฐ์–ต์ด ๋‚˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

ํ•ด์•ผํ–ˆ์–ด์•ผํ•˜๋Š” ๋‹ต๋ณ€

UserDefaults๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์‹ฑ๊ธ€ํ†ค ์ธ์Šคํ„ด์Šค๋กœ, ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅ ๋ฐ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ
๋‚ด๋ถ€์ ์œผ๋กœ plist ํŒŒ์ผ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ƒ ๊ฐ•๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์งˆ๋ฌธ5

iOS์—์„œ CI/CD ์ž๋™ํ™”์— ๋Œ€ํ•ด ์•„์‹œ๋‚˜์š”?

๋ฐฐํฌ ์ž๋™ํ™”์— ๊ด€์‹ฌ์ด ์žˆ์–ด ์ฐพ์•„๋ณธ ๊ธฐ์–ต์ด ์žˆ์Šต๋‹ˆ๋‹ค. fastlane์„ ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์ •๋„๋งŒ ์•Œ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋ฆฌ์”จ๋Š” iOS์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋Š๊ปด์ง€๋„ค์š”.

iOS ๋‚ด๋ถ€์ ์œผ๋กœ๋„ CI/CD ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํˆด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฉด์ ‘ ์†Œ๊ฐ

์ด์™ธ์— ๋‹ค๋ฅธ ์งˆ๋ฌธ๋“ค๋„ ์žˆ์—ˆ๊ณ  ์—„์ฒญ ๋งŽ์€ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋‹ค.

์ž˜ ๋Œ€๋‹ตํ–ˆ์—ˆ๋˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์ด๋‚˜ ํ”„๋กœ์ ํŠธ ์งˆ๋ฌธ๋“ค์€ ์ƒ๋žตํ–ˆ๋‹ค.

 

๋‹น์žฅ ํ˜„์—…์— ํˆฌ์ž…๋  ์ˆ˜ ์žˆ์„ ์ •๋„์˜ ์ง€์‹์„ ์›ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์•˜๊ณ , SwiftUI๋กœ ์ถœ์‹œ ๊ฒฝํ—˜ 1๋ฒˆ ์žˆ๋Š” ๋‚˜๋กœ์„œ๋Š” ๋„ˆ๋ฌด ์–ด๋ ค์šด ์งˆ๋ฌธ๋“ค์ด ๋งŽ์•˜๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ UIkit์— ์‹œ๊ฐ„์„ ๋งŽ์ด ํˆฌ์žํ–ˆ์–ด์•ผ ์ž˜ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฉด์ ‘์ด์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•