[iOS/Swift] Say Hello to Swift 6.2, WWDC25
ยท
Swift
(ํฌ์ŠคํŒ… ๋‚ด์šฉ ์™ธ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ๋ณ€๊ฒฝ๋์Šต๋‹ˆ๋‹ค.)New Feature in ConcurrencyDefault Actor Inference; ๊ธฐ๋ณธ ์•กํ„ฐ ์ถ”๋ก ; SE-466Swift 6.2๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ Main Actor๋กœ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor defaults// As-is@MainActorclass DataController { func load() { } func save() { }}struct App { let controller = DataController() init() { controller.load() }}// To-be// ์ด์ œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Global Acto..
[iOS/Swift] URLProtocol์„ ์‚ฌ์šฉํ•ด ๋„คํŠธ์›Œํ‚น์„ ํ…Œ์ŠคํŠธํ•ด๋ณด์ž
ยท
Swift
์•ฑ์ด ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๋Š”๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.๋„คํŠธ์›Œํ‚นํ•˜๋Š” ๊ฐ์ฒด๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์— ์˜๋„ํ•œ๋Œ€๋กœ ๊ธฐ๋Šฅํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์˜๋„ํ•œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฉด์„œ๋„ ๋ฐฐํฌํ•  ์ƒ๊ฐ์ด์‹ ๊ฐ€์š”?ํ…Œ์ŠคํŠธ๋Š” ๋งŒ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค๋งŒ, ์ ์–ด๋„ ์ž„์˜์˜ ํ…Œ์ŠคํŠธ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ ์˜๋„ํ•œ๋Œ€๋กœ ๋™์ž‘ ํ•˜๋Š”์ง€ ์ •๋„๋Š” ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(๋„คํŠธ์›Œํฌ์—๋งŒ ๊ตญํ•œ๋˜๋Š” ์ด์•ผ๊ธฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ์š”!)URLSession์„ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๊ฐ์ฒด๋Š” ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์„๊นŒ?iOS์•ฑ์—์„œ ๋„คํŠธ์›Œํ‚น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ทธ์ค‘ URLSession์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๊ธฐ์กด์—๋Š” URLSession์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด, DataTask๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ Warpingํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค...
[iOS/Swift] ๋ทฐ ์ขŒํ‘œ๊ณ„์™€ UIView.Frame
ยท
Swift
๋ทฐ ์ขŒํ‘œ๊ณ„UIView์˜ ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•ด ์ง์ ‘์ ์ธ ์–ธ๊ธ‰์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์งค๋ง‰ํ•˜๊ฒŒ View Programming Guide for iOS ๋ผ๋Š” ๋งํฌ๋กœ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ๊ณ , View and Window Architecture - View Geometry and Coordinate Systems์—์„œ ๋ทฐ ์ขŒํ‘œ๊ณ„์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋ฒˆ์—ญํ•˜๋ฉด ๋ทฐ์˜ ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ์™€ ์ขŒํ‘œ๊ณ„ ์ •๋„๊ฐ€ ๋˜๊ฒ ๋„ค์š”.๋ทฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ขŒ์ƒ๋‹จ์ด (0,0)๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  ์ด๋ฅผ origin point๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์ด x์ถ•์ด๋ฉฐ ์ˆ˜์ง ๋ฐฉํ–ฅ์ด y์ถ• ์ด๊ณ , ์ขŒํ‘œ๊ณ„์˜ ๊ฐ’์€ ๋ถ€๋™์†Œ์ˆ˜์ ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.๋ชจ๋“  ๋ทฐ์™€ ํ™”๋ฉด์€ ์ž์‹ ๋งŒ์˜ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ขŒํ‘œ๊ณ„๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•ด ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผ..

์†Œ์ผ“ ๋’ท์กฐ์‚ฌ์ข€ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค
ยท
๋„คํŠธ์›Œํฌ
: ๊ฐœ๋ฐœ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”์ƒํ™”๋œ, ํŒŒ์ผ ์œ ์‚ฌ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปค๋„์˜ ํ†ต์‹  ์ฑ„๋„ ๊ฐ์ฒด(ํฌ์ŠคํŒ… ๋‚ด ๋Œ€๋ถ€๋ถ„์˜ ์ปค๋„ ์ฝ”๋“œ๋Š” Darwin XNU API๋กœ ๊ธฐ์ˆ ํ–ˆ์Šต๋‹ˆ๋‹ค.)์™œ ํ•„์š”ํ•œ๊ฐ€?ํ”„๋กœ์„ธ์Šค๋Š” ์ง์ ‘ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ. ์ปค๋„๋งŒ์ด ์žฅ์น˜์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Œ๋”ฐ๋ผ์„œ, ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์™€ ํ†ต์‹ ํ•˜๋ ค๋ฉด ์ปค๋„์—๊ฒŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” API๊ฐ€ ํ•„์š”. ์ด๋•Œ ์ปค๋„๊ณผ ์†Œํ†ตํ•˜๋Š” ์ฐฝ๊ตฌ๊ฐ€ ์†Œ์ผ“์ฆ‰, ์†Œ์ผ“์€ โ€œ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์™€ ์ปค๋„ ๋„คํŠธ์›Œํฌ ์Šคํƒ ์‚ฌ์ด์˜ ๊ณ„์•ฝ๋œ ์ธํ„ฐํŽ˜์ด์Šคโ€์†Œ์ผ“์€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ถ”์ƒ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ์ฒด์ด๋ฉฐ, ์‹ค์งˆ์ ์ธ ๋…ธ๋“œ ์•ˆ์˜ ์ข…๋‹จ์ ์ด๋‹ค.์œ„ ๊ทธ๋ฆผ์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์†Œ์ผ“์„ ํ†ตํ•ด ๋งˆ์น˜ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.์ฆ‰, ์–‘ ์ข…๋‹จ์˜..

[๊ตฌ๋ฆ„Level] ๊ทœ์น™ ์ˆซ์ž ์•ผ๊ตฌ Swift ํ’€์ด
ยท
PS
๋ฌธ์ œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค์—ˆ๋˜,,,2๋‹จ๊ณ„์—์„œ fail์ผ ๋•Œ, ์ˆซ์ž ๋ณ€ํ™˜ ํ›„ 2๋‹จ๊ณ„๊ฐ€ ๋ชจ๋‘ ๋๋‚œ ๊ฐ’์„ ๋‹ค์‹œ ํ‰๊ฐ€ํ•˜์—ฌ 3๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์ค„ ์ดํ•ดํ–ˆ๋‹ค.1๋‹จ๊ณ„์—์„œ๋งŒ ํ™•์ธํ•˜์˜€๋˜ strike๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ 3๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ์œ ์˜ํ•˜์ž.๋ฌธ์ œ๋งํฌ์†Œ์Šค์ฝ”๋“œ๋”๋ณด๊ธฐlet answer = readLine()!.map{ Int(String($0))! }var expectation = readLine()!.map{ Int(String($0))! }func isCorrect()->Bool{ for i in 0..
[๋ฐฑ์ค€] 1918 ํ›„์œ„ ํ‘œ๊ธฐ์‹
ยท
PS
๋ฌธ์ œ๋งํฌ 1918๋ฒˆ: ํ›„์œ„ ํ‘œ๊ธฐ์‹ ์ฒซ์งธ ์ค„์— ์ค‘์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ ์ด ์ˆ˜์‹์˜ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ˆ˜์‹์—์„œ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  -A+B์™€ ๊ฐ™์ด -๊ฐ€ ๊ฐ€์žฅ ์•ž์— ์˜ค๊ฑฐ๋‚˜ AB์™€ ๊ฐ™์ด *๊ฐ€ ์ƒ๋žต๋˜๋Š” ๋“ฑ์˜ www.acmicpc.net ๋‚˜์˜ ํ’€์ด Algorithm-TILs/๋ฐฑ์ค€/Gold/1918. ํ›„์œ„ ํ‘œ๊ธฐ์‹/ํ›„์œ„ ํ‘œ๊ธฐ์‹.swift at e592fdc005dd4aa478ee724b4c7cf460d91cda33 ยท 05 PS๊ธฐ๋ก. Contribute to 051198Hz/Algorithm-TILs development by creating an account on GitHub. github.com ์ค‘์œ„ ํ‘œ๊ธฐ์‹์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ‰๋ฒ”ํ•œ ๋ฌธ์ œ์ด๋‹ค. ์™œ ๊ณจ๋“œ2์˜ ๋‚œ์ด๋„์ธ์ง€๋Š” ์ž˜ ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹คํŠธ ๊ฒŒ์ž„
ยท
PS
๋ฌธ์ œ ๋งํฌ ๋‚˜์˜ ํ’€์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด ํ•ด์„ค ์ ‘๊ทผ๋ฒ•์ด๋ผ๊ณ  ํ•  ๊ฒƒ๋„ ์—†์ด, ๋ฐฐ์—ด๊ณผ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. split์„ ํ™œ์šฉํ•œ ํŒŒ์‹ฑ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๊ต‰์žฅํžˆ ๊ฐ„๊ฒฐํ•ด์ง€๋Š” ํ’€์ด๋ฅผ ๋ณด๋ฉฐ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค....