ios 143

Swift Testing으로 테스트 심화하기 (Go further with Swift Testing) - WWDC24

Swift Testing으로 테스트 심화하기 (Go further with Swift Testing) - WWDC24 코드가 복잡해질수록 테스트를 읽고 이해하기 쉽도록 만드는 것이 더욱 중요모든 엣지 케이스를 방어하기 위해 코드 커버리지를 적당히 유지그룹으로 잘 관리하는것이 어려움.테스트 사이에 숨겨진 종속성으로 인해 테스트가 취약해짐. 테스트는 일반적으로 완벽하기보단 덜 작성되는게 많지만, 잘못된 입력과 예상치 못한 조건을 마주친 경우에도 테스트가 깔끔하게 실패하게 해야함. 이렇게 코드를 작성한 경우에는 try 구문에서 테스트가 실패함.만약 함수가 성공적으로 실행될 경우 expect에서 값을 확인할 수 있음. 반면에 테스트 실패 케이스가 의도대로 실패하는지 확인하려면 do - catch 문을 확인..

apple/WWDC 2025.06.29

Meet Swift Testing - WWDC24

Meet Swift Testing - WWDC24 뛰어난 사용자 경험을 제공하려면 품질과 안전성이 매우 중요. Swift Testing은 새로운 오픈소스 패키지로 Swift 동시성 및 매크로 같은 최신 기능을 도입함.Linux와 Windows 등 모든 주요 플랫폼을 지원함. @Test가 Swift Testing에서 함수가 테스트임을 나타냄.async or throws를 사용할 수 있으며 경우에 따라서 Actor로 격리 가능함. #expect는 매크로로 일반 표현식과 언어 연산자를 허용함.테스트가 실패할 경우에는 코드와 표현식에 대한 값을 캡처함. 테스트가 실패한 경우 #expect에 전달된 표현식에 대한 세부 정보가 하위 값과 함께 표시됨. #expect는 매우 유연해서 연산을 수행할 수 있..

apple/WWDC 2025.06.29

Swift 동시성 사용하기 (Embracing Swift Concurrency) - WWDC25

Swift 동시성 사용하기 (Embracing Swift Concurrency) - WWDC25 동시성을 활용하면 응답성을 향상시킬 수 있음.- Swift Concurrency 동시성 모델은 동시성을 사용하는 코드를 올바르게 작성하기 위해 설계되었음.- 이를 통해 동시성 도입이 명시적으로 이루어지고 동시 작업에서 어떤 데이터가 공유되는지 명확해짐- 컴파일 시점에 이를 확인하므로 안전함 많은 앱은 동시성을 아껴서 사용하고, 어떤 앱은 아예 동시성이 필요 없기도 함.단일 스레드를 사용하는 것에 비해서 동시성은 앱을 복잡하게 만들 수 있어서 필요할 때 도입해야 함. 앱은 모든 코드를 메인 스레드에서 실행하여 시작해야 하며 단일 스레드로도 상당히 많은 코드를 작성할 수 있음.메인 스레드는 앱이 UI 관련 ..

apple/WWDC 2025.06.21

Swift로 메모리 사용량 및 성능 개선하기 (Improve memory usage and performance with Swift) - WWD

Swift로 메모리 사용량 및 성능 개선하기 (Improve memory usage and performance with Swift) - WWDC25 Swift 6.2에서 새로 추가된 기능을 활용해 코드 성능을 이해하고 개선하는 방법을 알아보자 새로운 InlineArray 및 Span 타입을 사용해 제네릭을 알아보고, 탈출할 수 없는 타입에 대해서 알아보고 이러한 타입들을 사용해 보유 및 해제 독점성 및 고유성 검사 기타 추가 작업을 제거할 것. Binary Parsing을 빠르고 안전하게 작성할 수 있는 새로운 오픈소스 라이브러리(Swift Binary Parsing)도 알아볼 예정.이는 속도에 중점을 두고 여러가지 종류의 안전을 관리하는데 필요한 도구를 제공함 이번 세션에서는 코드가 시간을 ..

apple/WWDC 2025.06.15

앱의 전력 사용량 프로파일링 및 최적화하기 (Profile and optimization power usage in your app) - WWDC25

앱의 전력 사용량 프로파일링 및 최적화하기 (Profile and optimization power usage in your app) - WWDC25 안정성에 중요한 요소 중 하나가 배터리 수명. 목차Debug reproducible issues쉽게 재현할 수 있는 문제부터 해결해 볼 예정이며, 실제 사례를 통해 과도한 전력 사용을 식별하고 줄이는 방법을 확인.Uncover hidden issues좀 더 어렵고 구체적인 실제 상황을 파악하는 방법을 알아보고, 어떤 환경에서든 데이터를 수집하는 방법을 알아볼 것Compare power usage코드 구현에 따라 전력 소비에 대해서 비교해보며 앱의 효율성을 측정하고 개선하는 명확한 방법을 알아볼 것Optimization proactively개발 과정 초기..

apple/WWDC 2025.06.11

힙 메모리 분석하기(Analyze heap memory) - WWDC24

힙 메모리 분석하기(Analyze heap memory) - WWDC24 힙 메모리는 앱에서 직간접적으로 사용되며, 개발자가 제어하고 최적화할 수 있는 영역.앱의 Reference 타입이 저장되는 곳이며, 쓰기 작업이 자주 발생하고 수정되기 때문에 중요함.이렇게 수정된 메모리들은 메모리 한도에 포함되어 계산 됨.이번 세션에서는 힙 메모리 측정과 감소 방법에 대해서 주로 다룰 것. 메모리 측정이나 최적화에 대해서 더 알고 싶다면 다른 세션들도 존재함. - 측정하기- 일시적 증가에 대응- 지속적 증자 추적- 메모리 누수 수정하기- 런타임 성능 개선하기총 5가지 세션에 대해서 다룸 힙을 이해하려면 앱의 전체 가상 메모리 내에서 어떤 맥락에 있는지를 알아야 함.앱이 시작되면, 자체적인 빈 가상 메모리 ..

apple/WWDC 2025.06.03

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

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

apple/WWDC 2025.05.01

Protect mutable state with Swift actors - WWDC21

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

apple/WWDC 2025.04.27

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

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

apple/WWDC 2025.04.25