WWDC22

Horus-iOS·2022년 6월 7일
0

1일차

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


2일차

Concurrency

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
}

UIKit

https://developer.apple.com/videos/play/wwdc2022/10068/

UICalendarView

Self-resizing cells

class UICollectionView {
    var selfSizingInvalidation: SelfSizingInvalidation
}

Metal

나중에 봐야지.

https://developer.apple.com/videos/play/wwdc2022/10160/

0개의 댓글