์ „์ฒด ๊ธ€ 118

[Swift] ํ•จ์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ ๊ฐœ์„ ํ•˜๊ธฐ

ํ•จ์ˆ˜UI ์ฝ”๋“œ๋ฅผ viewDidLoad์— ์ž‘์„ฑ์„ ํ•˜๋‹ค๋ณด๋ฉด,ํ•œ๋ˆˆ์— ๋ณด๊ธฐ๋„ ํž˜๋“ค๊ณ , ์ถ”ํ›„์— ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ•˜๊ธฐ๋„ ์ข‹์ง€ ์•Š์„ ๊ฒ๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ viewDidLoad์— ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌํ•˜์ฃ .์—ฌ๊ธฐ์„œ ์ƒ๊ธฐ๋Š” ๊ถ๊ธˆ์ฆ!๐Ÿค”'์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  designButtonUI๋Š” ํ˜ธ์ถœ์„ ํ•ด์ฃผ๋ฉด์„œ.. ์™œ viewDidLoad ํ•จ์ˆ˜๋‚˜ Action ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š”๊ฑฐ์ง€??'์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!!๐Ÿ˜€class ViewController: UIViewController { @IBOutlet var button1: UIButton! @IBOutlet var button2: UIButton! @IBOutlet var button3: UIButton! ..

Swift/Xcode 2024.05.20

[Swift] Storyboard ์‚ฌ์šฉ ์‹œ Outlet ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•

Storyboard์—์„œ UI๋ฅผ ์งœ๊ณ , Code์— ์—ฐ๊ฒฐํ•  ๋•Œ ์•„์šธ๋ › ์ด๋ฆ„์„ ์ง€์–ด์ค˜์•ผํ•œ๋‹ค.ํ•˜์ง€๋งŒ, ์ž‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋„ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค.๊ทธ๋ž˜์„œ์œ„ ํ™”๋ฉด์—์„œrandomButton์„ recommendButton์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์–ด์„œ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด?์•„๋ž˜ ์ฝ”๋“œ์—์„œ ์ด์ „์— ์ž‘์„ฑํ–ˆ๋˜ ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋œจ๊ณ ,๋ฐ‘์— ์ด๋ฆ„๋“ค๊นŒ์ง€ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋‚˜๋ฉด, ์—๋Ÿฌ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋นŒ๋“œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด!์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด์„œ ์‹คํ–‰์ด ๋ฉˆ์ถ”๊ณ , ๋””์ฝ”๋”ฉ ์˜์—ญ์— ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์•Œ๋ ค์ฃผ๋Š”๋ฐ..randomButton์— ํ•ด๋‹นํ•˜๋Š” key value๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋А๋ƒ!๋ฐ”๋กœ ์ฝ”๋“œ์ƒ ์•„์šธ๋ › ์ด๋ฆ„์€ ๋ฐ”๋€Œ์—ˆ์ง€๋งŒ, ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ์žˆ๋Š” ์•„์šธ๋ › ์ด๋ฆ„์€ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์šฐ์ธก ์ปค๋„ฅ์…˜ ์ธ์ŠคํŽ™ํ„ฐ๋ฅผ ๋ณด..

Swift/Xcode 2024.05.16

๊ฐœ์ธ๊ณผ์ œ_์ฑ… ๊ฒ€์ƒ‰ ์•ฑ ๋งŒ๋“ค๊ธฐ_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=1764514799&allow_ip=&allow_referer=&signature=ceWtnaifG7FGXioBy6Q40ExLj9g%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()}์ด์ œ ์ด๋Ÿฐ ํ˜•ํƒœ๋Š” ํด๋กœ์ €๋ผ๋Š” ๊ฑด ์•Œ ์ˆ˜ ์žˆ์ฃ ?ํด๋กœ์ €์˜ ๊ฐœ๋…์„ ์•„์ง ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด,์˜ค๋Š˜์€ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค.์ด์ „์— ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๋ง‰์ƒ ํด๋กœ์ €์— ๋Œ€ํ•ด์„œ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๊ณ  ..