์ „์ฒด ๊ธ€ 124

๊ฐœ์ธ๊ณผ์ œ_์ฑ… ๊ฒ€์ƒ‰ ์•ฑ ๋งŒ๋“ค๊ธฐ_TIL

์˜ค๋Š˜ ๊ฐœ์ธ๊ณผ์ œ๋ฅผ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ,ํ•ญ์ƒ Storyboard๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ฝ”๋“œ๋กœ๋งŒ UI๋ฅผ ์งœ๋ ค๊ณ  ํ•˜๋‹ˆ.. ๋„ˆ๋ฌด ์–ด๋ ต๋‹คใ…œใ…œ์›๋ž˜ ์ฝ”๋“œ๋กœ ํ•˜๋Š”๊ฒŒ ์ต์ˆ™ํ•ด์ง€๋ฉด, ๋” ์‰ฝ๋‹ค๊ณ  ๊ทธ๋Ÿฌ๋˜๋ฐ.. ์•„์ง์€ ๋ญ๊ฐ€ ๋ญ”์ง€.. ์ •์‹ ์ด ์—†๋‹ค.์ผ๋‹จ, ์˜ค๋Š˜์€ tabBar๋กœ ๊ฒ€์ƒ‰ ํ™”๋ฉด์ด๋ž‘ ์ฐœ ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด ๋‘ ๊ฐœ ์—ฐ๊ฒฐํ•˜๊ณ , ๊ฒ€์ƒ‰ ํ™”๋ฉด์— SearchBar์™€ TableView๋ฅผ ๋„ฃ์—ˆ๋‹ค.UI๋ฅผ ์–ผ๋ฅธ ์™„์„ฑํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ.. ์•„์ง ๊ฐˆ๊ธธ์ด ๋ฉ€๋‹ค.์ผ๋‹จ ์˜ค๋Š˜๊นŒ์ง€ UI ์–ด๋А์ •๋„ ์™„์„ฑํ•˜๊ณ ,๋‚ด์ผ ์˜คํ›„์—” ๋๋‚ด๊ณ  ์‹ถ๋‹ค๐Ÿฅน์˜ค๋Š˜ ์˜คํ›„์—๋Š” Standard๋ฐ˜ ์ˆ˜์—…์ด ์žˆ์—ˆ๋Š”๋ฐ,๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด์„œ ๊ฐ•์˜ํ•ด์ฃผ์…จ๋‹ค.URLSession์€ ์กฐ๊ธˆ ์ต์ˆ™ํ•ด์„œ ๋Œ€๋ถ€๋ถ„ ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ์ด์—ˆ์ง€๋งŒ,๋“ค์œผ๋ฉด์„œ ์ฒ˜์Œ ์•Œ๊ฒŒ๋œ ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด์„œ ์žฌ๋ฐŒ์—ˆ๋‹ค.(QuickType.io, Insomnia, Codi..

8์ฃผ์ฐจ_5์ผ์ฐจ_์•ฑ ๊ฐœ๋ฐœ ์‹ฌํ™”_TodoList ์•ฑ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค๊ธฐ_TIL

์ „์ฒด์ ์ธ ์ฝ”๋“œ๋Š” ์ด์ „์— ์ •๋ฆฌํ–ˆ์—ˆ๋˜,TodoList ์•ฑ ๋งŒ๋“ค๊ธฐ์™€ ๋™์ผํ•˜๋‹ค!์˜ค๋Š˜์€ TodoList ๋งŒ๋“ค๊ธฐ ๊ฐœ์ธ๊ณผ์ œ ๊ตฌํ˜„ ๊ณผ์ •์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.โ˜บ๏ธ์ด์ „์— ์ผ๋˜ ์ฝ”๋“œ ๋‹ค์Œ ๋‚  ๊นŒ๋จน๊ณ ..๋‹ค์‹œ ๋‡Œ ๋ฆฌ์…‹^-^ ํ•˜๋ฃจ ์ข…์ผ ๋ฉ˜ํƒˆ ๋ฐ”์‚ฌ์‚ฌ์‚ญ๐Ÿ’ช๐Ÿป๋‹ค์‹œ ์ฐจ๊ทผ์ฐจ๊ทผ ์‹œ์ž‘..!^^์—ญ์‹œ " data-og-host="yegenie-coding.tistory.com" data-og-source-url="https://yegenie-coding.tistory.com/73" data-og-url="https://yegenie-coding.tistory.com/73" data-og-image="https://blog.kakaocdn.net/dna/bLzmWs/hyV2BB0y25/AAAAAAAAAAAAAAAAAAAAAHNt6e_ZXQSbRWipdxM6EcHDM8BchD3CQbuY7A9w5X_a/img...?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=qb71SjhnAleQx4%2FXWyl7pTGy6Ls%3D

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์‹œ์ € ์•”ํ˜ธ

func solution(_ s:String, _ n:Int) -> String { let upperStr = Array("abcdefghijklmnopqrstuvwxyz".uppercased()) let lowerStr = Array("abcdefghijklmnopqrstuvwxyz") var result = "" for i in s { // ๋Œ€๋ฌธ์ž์— ํฌํ•จ๋œ ๊ฒฝ์šฐ if upperStr.contains(i) { var indexNum = (upperStr.firstIndex(of: i) ?? 0) + n if indexNum > 25 { indexNum = inde..

8์ฃผ์ฐจ_3์ผ์ฐจ_์•ฑ ๊ฐœ๋ฐœ ์‹ฌํ™”_๋™์˜์ƒ ์•ฑ ๋งŒ๋“ค๊ธฐ_TIL

์˜ค๋Š˜์€ ๋™์˜์ƒ ์•ฑ ๋งŒ๋“ค๊ธฐ ์‹ค์Šต์„ ํ•ด๋ดค๋‹ค.๋‚ฎ์—๋Š” ๊ฐ•์˜๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ณ ,์˜คํ›„์—๋Š” ํ•ด์„ค๊ฐ•์˜ ๋ณด๊ธฐ ์ „์— ๋จผ์ € ๋งŒ๋“ค์–ด๋ดค๋‹ค.4์‹œ์— Standard๋ฐ˜ ์ˆ˜์—…์„ ๋“ฃ๊ณ ,์ €๋… ํšŒ์˜ ์ „๊นŒ์ง€ ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.(์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์ปฌ๋ ‰์…˜ ๋ทฐ ์—ฐ์Šต์€ ๋‚ด์ผ ํ•  ์˜ˆ์ •)์ง€๋‚œ ํŒ€ ํ”„๋กœ์ ํŠธ ๋•Œ,๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋ฅผ ๋งก์œผ๋ฉด์„œ URLSession์„ ์‚ฌ์šฉํ–ˆ์–ด์„œํฌ๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.(์˜ค๋Š˜์˜ ๋ฐ”๋ณด ์ฐ ํ•˜๋‚˜ ์žˆ์Œ ใ…‹.ใ…‹)๋‚ด์ผ์€ iOS ์•ฑ ๊ฐœ๋ฐœ ์‹ฌํ™” ๊ฐ•์˜ ์ •๋ฆฌํ•˜๊ณ ,์˜ค๋Š˜์€ ๋™์˜์ƒ ์•ฑ ๋งŒ๋“ค๊ธฐ ๋‚ด์šฉ ์ •๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.AVKit์„ ์‚ฌ์šฉํ•ด์„œ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ ์‹ฌํ™”๊ฐ•์˜ ๋งˆ๋ฌด๋ฆฌ ๊ณผ์ œ(?)์š”๊ตฌ์‚ฌํ•ญ์„ README์— ์ •๋ฆฌํ•ด๋ดค๋‹ค.(https://github.com/yeggrrr/YeggrrrAVPlayerApp) [GET]https:..

[swift] ARC์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

TIL>์˜ค๋Š˜์€ iOS ์•ฑ ๊ฐœ๋ฐœ ์‹ฌํ™” ์ฃผ๊ฐ„ ์‹œ์ž‘ํ•˜๋Š” ๋‚ ์ด์—ˆ๋‹ค.(ํŒ€๋„ ์ƒˆ๋กœ ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ๋‹ค๋“ค ๋„˜ ํ™œ๋‹ฌํ•˜์…”์„œ ์ข‹๋‹ค..โ˜บ๏ธ)๊ฐ•์˜๋Š” ๋‹ค ๋“ค์—ˆ๋Š”๋ฐ,์•„์ง ์ „์ฒด์ ์œผ๋กœ ์ดํ•ด๋ฅผ ๋ชป ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚ด์ผ ํ•œ ๋ฒˆ ๋” ๋“ฃ๊ณ  ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค.์˜ค๋Š˜์€ ์ง€๋‚œ Escaping Closure ๊ฒŒ์‹œ๊ธ€์— ์ด์–ด์„œARC์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ARCARC๋Š” Automatic Reference Counting์˜ ์•ฝ์ž๋กœSwift๋Š” ์ด ARC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Heap ์˜์—ญ์˜ ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.Swift๋Š” ์ปดํŒŒ์ผ ์‹œ์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ ์ ˆํžˆ ๋„ฃ์–ด์คŒ์œผ๋กœ์จ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.โ˜บ๏ธRC(Reference Counting)์€ ๋ง ๊ทธ๋Œ€๋กœ!!์ฐธ์กฐ(reference)๋ฅผ ์„ธ์„œ ํ•ด๋‹น ..

[Swift] Escaping Closure

Escaping Closure(์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €)์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €๋Š” ํด๋กœ์ €๊ฐ€ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋์„ ๋•Œ, ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์—์š”!(์—์ž‡.. ํด๋กœ์ €๋„ ์–ด๋ ค์šด๋ฐ, ์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €๋Š” ๋˜ ๋ชจ์•ผ??๐Ÿ˜ก์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค..ํ•˜ํ•˜ํ•˜) ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋Œ€๋กœ Non-escaping Closure๋„ ์žˆ์–ด์š”.์ด๋…€์„์€ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ํด๋กœ์ €์ž…๋‹ˆ๋‹ค!์ด์ œ ์ฐจ๊ทผ์ฐจ๊ทผ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์ •๋ฆฌํ•ด๋ณผ๊ฒŒ์š”!! func escapingClosureEX(completion: () -> Void) { completion()}์ด์ œ ์ด๋Ÿฐ ํ˜•ํƒœ๋Š” ํด๋กœ์ €๋ผ๋Š” ๊ฑด ์•Œ ์ˆ˜ ์žˆ์ฃ ?ํด๋กœ์ €์˜ ๊ฐœ๋…์„ ์•„์ง ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด,์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค.์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ..

[Swift] ๊ณ ์ฐจํ•จ์ˆ˜(map, filter, reduce)

๊ณ ์ฐจํ•จ์ˆ˜(Higher-order Function) "๊ณ ์ฐจํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ผ๊นŒ?๐Ÿคจ"๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ๋ฐ›๊ฑฐ๋‚˜ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.์Œ..?๐Ÿงํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›๊ณ .. ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค..?ํด๋กœ์ €..?๋งž์•„์š”..! ์ด๋…€์„๋„ ์ผ๊ธ‰๊ฐ์ฒด(first-class object)์™€ ์—ฐ๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค!๐Ÿซข์•ž์„œ ํ•œ ๋ฒˆ ๋” ์ •๋ฆฌํ–ˆ์—ˆ๋˜ ํด๋กœ์ €! 7์ฃผ์ฐจ_5์ผ์ฐจ_์•ฑ ๊ฐœ๋ฐœ ์ˆ™๋ จ_Closure(ํด๋กœ์ €)_๊ฐœ์ธ๊ณต๋ถ€_TIL์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค. ์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๊นŒ๋จน์€ ๊ฒƒ ๊ฐ™์•˜๋‹ค. (๊ณผ๊ฑฐ ํด๋กœ์ € ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด ์žyegenie-coding.tistory.com Named Closure, Unnamed Closure๋Š” ์ผ๊ธ‰..

7์ฃผ์ฐจ_5์ผ์ฐจ_์•ฑ ๊ฐœ๋ฐœ ์ˆ™๋ จ_Closure(ํด๋กœ์ €)_๊ฐœ์ธ๊ณต๋ถ€_TIL

TIL>์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค.์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ๊นŒ๋จน์€ ๊ฒƒ ๊ฐ™์•˜๋‹ค.(๊ณผ๊ฑฐ ํด๋กœ์ € ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด ์ž์‹ .. ๋ฐ”๋ณด์ธ๊ฐ€(?) ๋ง๋”ํžˆ ์žŠ์–ด๋ฒ„๋ฆผ) 3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ•์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”_(2์ผ์ฐจ)_ํด๋กœ์ € & ๊ณ ์ฐจํ•จ์ˆ˜์˜ค๋Š˜์€ ์‹ฌํ™” ๊ฐ•์˜๋ฅผ ๋‹ค ๋“ค์—ˆ๋Š”๋ฐ, ์—ญ์‹œ๋‚˜ ๋ฉ˜๋ถ•..๐Ÿคฏ ํ›… ์–ด๋ ค์›Œ์ง„ ๋А๋‚Œ..? ๊ทธ๋ž˜๋„ ์–ด์ œ ์ดํ•ด ์•ˆ ๋œ ํด๋กœ์ €๊ฐ€ ์˜ค๋Š˜์€ ๊ท€์— ์ข€ ๋“ค์–ด์™€์„œ ๋‹คํ–‰์ด์—ˆ๋‹ค. ์—ญ์‹œ ๋ฌด์ง€์„ฑ์œผ๋กœ ๊ณ„์† ๋ณด๋ฉด ์ข€ ๋‚˜์•„์ง€๋Š” ๊ฒƒ ๊ฐ™์€.yegenie-coding.tistory.com..ใ…Žใ…Žใ…Žใ…Žใ…Ž!!!!์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๊ณ !!๐Ÿ˜€์ฃผ๋ง์—๋Š”โœ”๏ธ๊ณ ์ฐจํ•จ์ˆ˜(map, filter, reduce) _2024.04.21(์ž‘์„ฑ์™„๋ฃŒ)โœ”๏ธEscaping Closure _..