Junior Developer ๋ฉด์ ‘ ์ค€๋น„ ๋ฉด์ ‘์นดํƒ€โ‘ค
ยท
iOS_Developer/๋ฉด์ ‘์ค€๋น„
1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.๋‹ต๋ณ€: ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๊ณ , ์–ด๋””์„œ๋“  ์ด ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ „์—ญ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋‚˜ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฐ์ฒด์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. iOS์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ, ์„ค์ • ๊ด€๋ฆฌ ๋“ฑ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.์ถ”๊ฐ€ ์งˆ๋ฌธ ๊ฐ€๋Šฅ์„ฑ:์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋‹ต๋ณ€: ์žฅ์ ์€ ์ „์—ญ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๊ณ , ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋‹จ์ ์€ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ, ์˜์กด์„ฑ์ด ๋†’์•„์ง€๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.iOS์—์„œ ์‹ฑ๊ธ€ํ†ค์„ ๋งŒ๋“ค ๋•Œ ์ฃผ์˜ํ•  ์ ์€?๋‹ต๋ณ€: Swift์—์„œ๋Š” static let์„ ์‚ฌ์šฉํ•ด ์‹ฑ๊ธ€ํ†ค์„ ๊ตฌํ˜„ํ•  ๋•Œ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ณ ,..
Junior Developer ๋ฉด์ ‘ ์ค€๋น„ ๋ฉด์ ‘์นดํƒ€โ‘ฃ
ยท
iOS_Developer/๋ฉด์ ‘์ค€๋น„
1. clipToBounds์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.๋‹ต๋ณ€: clipToBounds๋Š” ๋ถ€๋ชจ ๋ทฐ์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž์‹ ๋ทฐ์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. true๋กœ ์„ค์ •ํ•˜๋ฉด ์ž์‹ ๋ทฐ๊ฐ€ ๋ถ€๋ชจ ๋ทฐ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋„˜๋Š” ๋ถ€๋ถ„์ด ์ž˜๋ฆฌ๊ณ , false๋กœ ์„ค์ •ํ•˜๋ฉด ๋„˜๋Š” ๋ถ€๋ถ„๋„ ๋ณด์ž…๋‹ˆ๋‹ค.์ถ”๊ฐ€ ์งˆ๋ฌธ ๊ฐ€๋Šฅ์„ฑ:clipToBounds๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?๋‹ต๋ณ€: ๋ถ€๋ชจ ๋ทฐ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ์ž์‹ ๋ทฐ์˜ ๋‚ด์šฉ์„ ์ˆจ๊ธธ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ€๋ชจ ๋ทฐ์— ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ์ ์šฉํ•œ ๊ฒฝ์šฐ, ์ž์‹ ๋ทฐ๊ฐ€ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.clipsToBounds์™€ maskToBounds ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋‹ต๋ณ€: clipsToBounds๋Š” UIView์— ์ ์šฉ๋˜๋Š” ์†์„ฑ์œผ๋กœ, ์ž์‹ ๋ทฐ๋ฅผ ์ž˜๋ผ๋‚ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, maskToBounds๋Š” CALa..
Junior Developer ๋ฉด์ ‘ ์ค€๋น„ ๋ฉด์ ‘์นดํƒ€โ‘ข
ยท
iOS_Developer/๋ฉด์ ‘์ค€๋น„
๐Ÿ‘จ‍๐Ÿ’ป 3์ฃผ์ฐจ - iOS๐Ÿ”ฅ ํ‚ค์›Œ๋“œApp LifeCycleMemoryARCConcurrency๐Ÿ”ฅ ์˜ˆ์ƒ ์งˆ๋ฌธ์ง€AppDelegate์™€ SceneDelegate ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.AppDelegateiOS ์•ฑ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์ค‘์š”ํ•œ ์•ฑ ์ƒํƒœ ์ „ํ™˜(์˜ˆ: ์•ฑ์ด ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋  ๋•Œ)์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค iOS 13๋ถ€ํ„ฐ๋Š” ๋ฉ€ํ‹ฐ์œˆ๋„์šฐ ์ง€์›์„ ์œ„ํ•ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด SceneDelegate๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.์ฃผ๋กœ ์•ฑ์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…, ์›๊ฒฉ ์•Œ๋ฆผ ๋“ฑ๋ก, ํ‘ธ์‹œ ์•Œ๋ฆผ, ์‹ฌ๊ฐํ•œ ์•ฑ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.SceneDelegate iOS 13 ์ด์ƒ์—์„œ ๋“ฑ์žฅํ•œ ๊ฐ์ฒด๋กœ, ํ•˜๋‚˜์˜ ์•ฑ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ UI ์ฐฝ(์žฅ๋ฉด)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. AppDelegate๊ฐ€ ์ „์ฒด ์•ฑ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด, SceneDeleg..
Junior Developer ๋ฉด์ ‘ ์ค€๋น„ ๋ฉด์ ‘์นดํƒ€โ‘ก
ยท
iOS_Developer/๋ฉด์ ‘์ค€๋น„
๐Ÿ‘จ‍๐Ÿ’ป 2์ฃผ์ฐจ - ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ๐Ÿ”ฅ ํ‚ค์›Œ๋“œ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐclassstructprotocol์ ‘๊ทผ์ œ์–ด์ž๐Ÿ”ฅ ์˜ˆ์ƒ ์งˆ๋ฌธ์ง€class ์™€ struct์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.class์ฐธ์กฐ ํƒ€์ž…: ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ์ฐธ์กฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌํ•  ๋•Œ ์ฐธ์กฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ž… ์บ์ŠคํŒ… ๊ฐ€๋Šฅ: ๋Ÿฐํƒ€์ž„์— ํƒ€์ž… ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ: ์ฐธ์กฐ๋œ ๊ณณ์—์„œ ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์ด ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.์†Œ๋ฉธ์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ: deinit ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ๋ฉธ์ž(deinitializer)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ƒ์† ๊ฐ€๋Šฅ: ํด๋ž˜์Šค๋Š” ์ƒ์†์„ ํ†ตํ•ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.struct ๊ฐ’ ํƒ€์ž…: ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ’ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌํ•  ๋•Œ ๊ฐ’์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ..
Junior Developer ๋ฉด์ ‘ ์ค€๋น„ ๋ฉด์ ‘์นดํƒ€ โ‘ 
ยท
iOS_Developer/๋ฉด์ ‘์ค€๋น„
๐Ÿ‘จ‍๐Ÿ’ป 1์ฃผ์ฐจ Swift + CS๐Ÿ”ฅ ํ‚ค์›Œ๋“œArrayStackQueuePropertyOptionalClosureExtension1. Array์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.๋ฐฐ์—ด์€ ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜๋ฐฐ์—ด์€ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ(order)๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, [1, 2, 3, 4, 5]๋ผ๋Š” ๋ฐฐ์—ด์—์„œ ์ˆซ์ž 1์€ ์ฒซ ๋ฒˆ์งธ ์œ„์น˜(์ธ๋ฑ์Šค 0)์— ์žˆ๊ณ , ์ˆซ์ž 5๋Š” ๋‹ค์„ฏ ๋ฒˆ์งธ ์œ„์น˜(์ธ๋ฑ์Šค 4)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์ ‘๊ทผ:๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, let numbers = [1, 2, 3, 4, 5]๋ผ๋Š” ๋ฐฐ์—ด์—์„œ numbers[0]์€ 1์„, numbe..