apple/WWDC 12

[WWDC22] Swift 동시성 시각화 및 최적화 (Visualize and optimize Swift Concurrency)

Swift 동시성 시각화 및 최적화 (Visualize and optimize Swift Concurrency) 목차Swift Concurrency Recap 동시성 최적화 방법Concurrency OptimaizationThread Pool Exhaustion잠재적 스레드 풀 고갈 및 동시성 코드 오용 문제Continuation Misuse이를 방지하는 방법 Swift Concurrency Recap - Async/await은 블록 단위로 구성되어 thread blocking 없이도 작업을 실행 도중에 일시 중단 했다가 다시 재개할 수 있음.- Task는 동시성 코드의 기본 작업 단위로 동시성 코드를 실행하고 코드 상태 및 관련 데이터를 관리하는 데 사용. - Task에는 지역 변수와 취소 처리..

apple/WWDC 2025.05.01

[WWDC22] Meet distributed actors in Swift

[WWDC22] Meet distributed actors in Swift Swift의 동시성을 단일 프로세스 이상으로 활용하는 방법에 대해 알아볼 것 Distributed Actor와 상호작용 하는 방식을 바꾸지 않고도 잠재적으로 멀리 있을 수 있는 것을 의미이는 분산된 Actor가 어디에 있든 간에 동일한 방식으로 소통할 수 actor 간 소통이 가능함을 의미.이는 테스트에 있어 코드의 구현을 변경할 필요 없이 actor를 이동시킬 수 있음. 분산 Actor를 선언하려면 Swift 5.7에서 도입된 Distributed를 선언해야 함. distibuted를 사용하면 actor는 컴파일 타임에 검사 가능함. id는 distibuted actor 시스템에서 actor를 고유하게 식별하는데 사용...

apple/WWDC 2025.04.30

[WWDC21] Protect mutable state with Swift actors

[WWDC21] Protect mutable state with Swift actors actor를 활용해 동시에 실행되는 상황에서 mutable state를 보호하는 방법에 대해서 알아볼 것. 목차- Actors- Actor reentrancy- Actor isolation- Main actor 근본적으로 어려운 것은 데이터 경합 상황을 피하는 것.데이터 경쟁은 여러 개의 서로 다른 스레드가 동일한 데이터에 접근하고 이 중 하나 이상이 쓰기 동작일 때 발생이 문제는 발생하기 쉽지만 디버깅은 매우 어려움. 데이터 경합 상황에 의하여 둘 다 값이 1 혹은 둘 다 2가 나타나는 상황이 발생할 수 있음.데이터 경합은 공유된 변경 가능한 상태로 인해 발생함.데이터가 변경되지 않거나 여러 동시 작업이 발생하지..

apple/WWDC 2025.04.27

[WWDC21] Swift Concurrency: Behind the scenes

[WWDC21] Swift Concurrency: Behind the scenes 성능과 효율성을 위해 설계된 이유를 자세히 알아보고, Swift 동시성에 대해서 추론하는 방법과 GCD와 같은 기존 스레딩 라이브러리와 어떻게 다른지 알아볼 것임. Treading modelSwift 동시성의 기반이 되는 threading model에 대해서 알아보고 GCD와 비교.Synchroizationactor를 통한 Swift Concurrency의 동기화, actor가 내부적으로 어떻게 동작하는지를 설명.Serial Dispatch Queue와 같은 기본 Synchronization 요소와 어떻게 비교되는지actor를 사용하여 코드를 작성할 때 알아두어야 할 몇 가지 사항에 대해 알아보자 Treading mode..

apple/WWDC 2025.04.26

[WWDC23] 구조화된 동시성의 기초를 넘어 (Beyond the basics of structured concurrency)

구조화된 동시성의 기초를 넘어 (Beyond the basics of structured concurrency) 목차Task hierarchyTask cacnellationTask priorityTask group patternsTask-local valuesTask traces Task hierarchy 구조화된 동시성을 사용하면 동시적 코드를 추론할 수 있음.실행이 분기하여 동시에 실행되고, 해당 결과가 다시 재합류하는 그 지점을 잘 정의하여 그 지점을 사용할 수 있음.`if block`과 `for loop`가 동기식 제어 흐름의 동작을 정의하는 방식과 비슷 동시성을 정의하는 방법은 여러가지가 있으나, 모든 작업이 구조화된 것은 아님.구조화된 작업은 작업이 선언된 스코프에서 끝까지 살아남음. 마치 로..

apple/WWDC 2025.04.25

[WWDC24] UI 애니메이션 및 전환 효과 향상하기

[WWDC24] UI 애니메이션 및 전환 효과 향상하기 Intro- Transitions   - 화면 전환 및 프레젠테이션을 위한 새로운 고급 전환 방법 소개- SwiftUI animation   - SwiftUI animation과 UIKit 및 AppKit 간의 통합- Animating representables   - Representable을 통해 SwiftUI 애니메이션과 연결하는 방법- Gesture-driven animations   - 마지막으로 연속적인 제스처가 있을 때 UIView 및 NSView 애니메이션  Transitions SwiftUI에서 화면전환 새로운 API1. navigationTransitinStyle 추가2. matchedTransitionSource 추가 naviga..

apple/WWDC 2024.08.05

[WWDC24] Genmoji로 앱에서 더욱 풍부한 표현 선보이기

[WWDC24] Genmoji로 앱에서 더욱 풍부한 표현 선보이기  Whats' New- New Emoji keyboard- Genmoji- NSAdaptiveImageGlyph IntroExpress yourself- 이모티콘을 사용하여 앱의 표현력을 향상 시킬 수 있는 방법Emogi enhancements- 이모티콘 환경에 대한 최신 업데이트NSAdaptivelmageGlyph- 맞춤 이모티콘전송 API 소개Adopting in your app- 우리 앱에 얼마나 쉽게 적용하는지 소개Compatibility- 호환성 고려사항Advanced usage- 사용자 정의 텍스트 렌더링에 대한 일부 고급 사용 사례  Express yourself with emojiExpressive- 표현력 매우 풍부함Ver..

apple/WWDC 2024.08.03

[WWDC24] SwiftUI 컨테이너 쉽게 이해하기

[WWDC24] SwiftUI 컨테이너 쉽게 이해하기 What's New- ForEach(subviewsOf: )- Group(subviewsOf: )- Sections(subviewsOf: )- ContainerValues- @Entry Intro- Composition- Sections- Customization Composition @ViewBuilder를 사용할 경우 기본적으로 초기화 프로그램이 후행 클로저에 의해 동작.  새로운 API를 통해 업데이트 가능. 해당 API는 단일 뷰를 입력 값으로 받음.그리고 각 하위 뷰를 후행 뷰 빌더로 전달해 다른 종류의 뷰를 반환할 수 있도록 함.  이를 활용하면 UI를 좌측에서 우측처럼 사용 가능함.이는 엄청난 개선이지만 어떻게 동작하는지 제대로 이해하는게..

apple/WWDC 2024.08.02

[WWDC23] Accessibility & Inclusion

[WWDC23] Accessibility & Inclusion Apple에게 접근성은 필수적인 부분.우리가 앱의 접근성을 매우 쉽게 개선할 수 있도록 애플은 여러가지를 개선  Introduce- Accessibility enhancements   - 새로운 API에 탐구- Improve accessibility visual   - SwiftUI에서 접근성 개선- Keep state up-to-date   - UIKit에서 접근성 최신 상태로 유지하는 방법   새로운 접근성 안내 isToggle을 통해 힌트를 제공  알림레이아웃 변경화면 변경페이지 스크롤 알림을Swift에 네이티브 방식을 전송 가능   버튼의 행위에 알림을 달 수 있음.  중요도를 설정할 수도 있음.제 시간에 발음되지 않으면 무시되도 무방..

apple/WWDC 2024.07.31

[WWDC24] Swift의 성능 살펴보기

[WWDC24] Swift의 성능 살펴보기Swift의 Low-level에 대해서 알아볼 예정 Introduce- What is performance?: 성능이란?- Low-level principles: Low-level의 성능을 볼 때 고려해야 할 원칙- Putting it together: Swift의 어떻게 구현되는지, 성능에 어떤 영향에 미치는지 세부 사항을 알아보기 - What is performance?성능을 다차원적이고, 상황에 따라 달라집니다. 일반적으로 우리는 거시적인 문제 때문에 성능에 관심을 갖는다.  UI가 클릭하기 힘들 정도로 버벅이는 등의 문제가 생김. 하향식 방법을 조사많은 경우 코드의 Low-level 수준의 성능에 영향을 주지 않고 알고리즘 개선을 통해 이러한 문제를 해결...

apple/WWDC 2024.07.28