전체 글 451

[Crash] Content View returned an invaild size

[Crash] Content View returned an invaild size 크래시 분석- Compositional Layout을 사용할 때 item, group의 width 혹은 height을 모두 estimated로 둔 상태에서 Cell 내부의 레이아웃을 제대로 잡아주지 않은 경우에 발생.- 혹은 ContentConfiguration을 사용할 때 레이아웃 구성상 intrinsiccontentsize을 통해 View의 크기를 결정할 수도 있는데, 값을 넣어주지 않을 때도 발생. 크래시 전체 로그*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Content view returne..

Modern Cell configuration - WWDC21

Modern Cell configuration - WWDC21 데이터, 레이아웃, 셀 총 3가지 범주로 분류 가능함. - Data- Layout- Presentation 이번 세션에서는 View를 구성하는 방식에 중점을 둘 예정. 기본 셀을 사용할 때는 위처럼 사용할 수 있음. 구성할 수 있는 Configuration types은 두가지가 존재함- Background Configuration- Content Configuration Swift에서는 Value Type을 만드는데 비용이 매우 저렴함.즉, Configuration에 대한 변경 사항은 셀에 Configuration을 적용할 때까지 어던 것에도 영향을 미치지 않음. 생성하는데 가볍기 때문에 항상 새 Configuration으로 시..

apple/WWDC 2025.05.17

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

Meet distributed actors in Swift - WWDC22

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

apple/WWDC 2025.04.30

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

Swift Concurrency: Behind the scenes - WWDC21

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

apple/WWDC 2025.04.26

구조화된 동시성의 기초를 넘어 (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

iOS 앱 크기 줄이기

iOS 앱 크기 줄이기 예전에 개발했던 앱 사이즈가 너무 커서 앱 용량을 줄이기 위해서 분석.애플 문서를 먼저 정리하고, 후에 실제 앱에 실험해보는 형태로 적용목차Reducing your app’s size (iOS 앱 크기 줄이기)Reducing your app’s size - OverviewCreate the app size reportThis process creates a folder with your app’s artifactsApp Thining Size Report 생성 자동화하기Doing basic optimization to reduce your app’s size (앱 사이즈 최적화하기)Doing basic optimization to reduce your app’s size - Ove..

iOS 히치(hitch)에 대해서 알아보기

Understanding hitches in your app 사용자 인터페이스에서의 중단과 히치(hitch)에 대해 알아보기인간의 인식은 화면에서의 움직임 중단에 매우 민감하며, 화면에서 부드러운 움직임이 짧은 시간 동안 멈추는 경우, 단 몇 밀리초라도 쉽게 눈에 띌 수 있음. 이러한 중단을 히치(hitch)라고 부름히치는 스크롤이나 드래그 같은 지속적인 인터랙션 또는 애니메이션 중에 발생각 히치는 사용자 경험에 영향을 미치므로 앱에서 가능한 한 히치를 최소화하는 것이 중요.히치란?움직임 중단은 화면이 예상한 속도로 업데이트되지 않을 때 발생하며, 프레임이 준비되지 않아 화면이 제때 업데이트되지 않으면 프레임이 지연됨.지연된 프레임은 종종 시스템이 이후 한두 개 이상의 프레임을 건너뛰게 만드는데, 이를 ..

iOS 최적화된 디스크 쓰기 관리

iOS 최적화된 디스크 쓰기 관리 데이터 저장을 위해 디스크에 쓰는 행위는 배터리 수명 및 저장 장치의 수명에 영향을 미침.디스크 쓰기를 줄이는 방법을 이해하면 앱 성능을 최적화하고 사용자 경험을 개선할 수 있음.  일반적으로 모든 iOS기기와 일부 macOS는 영구 저장소로 SSD를 사용함. SSD나 저장 매체에 있는 데이터에 엑세스 하는 속도는 RAM에 비해서 느림. Xcode와 Instruments를 사용하여 앱의 디스크 쓰기 성능을 파악할 수 있음. SSD 접근 최적화하기시스템이 SSD의 블록에 쓰기 작업을 수행할 때 해당 블록에 대한 새로운 읽기 요청은 기존 수행하는 쓰기 작업이 완료할 때 까지 대기함.SSD에 쓰는 것은 읽기 보다 느린 작업.읽기 및 쓰기 요청을 인터리빙하면 앱의 성능이 느..