https://developer.apple.com/videos/play/wwdc2022/102/
Platforms State of the Union - 전체 플랫폼 변화를 소개하는 영상이랑 디자인 어워드 영상. 이거는 한 번 꼭 보세요!
10:40 새로워진 정규표현식. import RegexBuilder
. 컴파일러가 정확한지 확인해준다(?)
12:40 Generic
// 아래 두 메소드는 같은 메소드
func playSongs<PlayList>(in playlist: Playlist) where Playlist: Collection, Playlist.Element == Song { ... }
func playSongs(in playlist: some Collection<Song>) { ... }
struct MusicLibrary {
var playlists: [?] // 배열 안에 배열이 들어갈 수도 있는 상황
}
struct MusicLibrary {
var playlists: [any Collection<Song>] // 어떤 Song Collection이든 담을 수 있게 해준다.
}
13:20
func playSongs(in playlist: some Collection<Song>)
struct MusicLibrary {
var playlists: [any Collection<Song>]
func playAll() {
for playlist in playlists {
playSongs(in: playlist)
}
}
14:20
SPM에 대한 이야기
import PackagePlugin
코드 길이에 따라 줄의 순서를 정렬한다던가.
17:00
빌드 타임이 빨라진다구우우우우웃!
알려지지 않았던 개선사항이라구우우우우우웃!
18:00
SwiftUI 이야기
19:00
앞서 SwiftUI 이야기에 이어서 SwiftUI의 Navigation과 Layout 이야기.
그리드라는 것이 추가되어서 일련의 뷰를 배치하기 쉬워졌다(?)
CustomLayout API 레이아웃 재사용을 쉽게 도와준다고.
cell에서 더 쉽게 SwiftUI를 호출할 수 있도록(?)
22:40
Swift Charts. 데이터 시각화. 코드 형태가 SwiftUI와 유사함.
24:09
import Charts
import SwiftUI
struct DonutChampionView: View {
@state private var salesData = SalesData.defaultData
var body: some View {
DonutBarChart(salesData: salesData) // 바 차트
DonutTable(salesData: salesData) // 테이블 차트
}
var barChart: some View {
Chart(salesData.byDay) { salesByDay in
BarMark (
x: .value("Day", salesByDay.day),
y: .value("Sales", salesByDay.sales)
)
}
.chartXScale(domain: sortedDays)
.frame(minHeight: 250)
}
}
30:05
백그라운드 화면 대거 변경(30분 13초부터 직접 보시는 것을 추천합니다)
41:00 쯤
import AppIntents
시리와 관련이 있거나 작성해둔 코드를 가져오는 등 개발 환경 향상이거나. (별로 관심 없어서 대충봤습니다)
44:20
보안과 관련한 내용
52:45
Metal 3
리소스 로딩이 빠른 API가 추가되었나?
컴파일 시점에서 셰이더를. (원래 런타임이었나?)
56:40
MapKit
1:00:00
WeatherKit
1:04:00
VisionKit. 예를 들어 사진에 보이는 글자를 기기로 들고와주는 그런거(?)
Live Text API
https://developer.apple.com/videos/play/wwdc2022/110355/
async, await을 사용하게 될 때, 자주 사용하게 될 것 같은 zip, merge와 같은 것을 설명하고 있다.
let clock = suspendingClock()
var deadline = clock.now + .seconds(3)
try await clock.sleep(until: deadline)
// 차이는 기기를 잠금할 때(?). Continuous는 기기 잠금 시에도 지속하는 것처럼 보인다.
let clock = SuspendingClock()
let elapsed = await clock.measure {
await someLongRunningWork()
}
let clock = ContinuousClock()
let elapsed = await clock.measure {
await someLongRunningWork()
}
class SearchController {
let searchResults = AsyncChannel<SearchResult>()
func search<SearchValues: AsyncSequence>(_ searchValues: SearchValues) where SearchValues.Element == String
}
https://developer.apple.com/videos/play/wwdc2022/10068/
UICalendarView
Self-resizing cells
class UICollectionView {
var selfSizingInvalidation: SelfSizingInvalidation
}
나중에 봐야지.