SerialQueue 순차 실행 작업을 계획합니다. DispatchQueue의 attributes를 비워두면 serial이 됩니다. let serialQueue = DispatchQueue(label: "serialQueue") func serialQueueA() { serialQueue.async { print(#function, Thread.current) for i in 1...10 { print("❤️", i) } } } func serialQueueB() { serialQueue.async { print(#function, Thread.current) for i in 1...10 { print("💚", i) } } } serialQueueA() serialQueueB() serialQueue는 ..
DispatchQueue 앱의 메인스레드나 백그라운드 스레드에서 순차적serially이거나 동시concurrently에 작업 실행을 관리하는 객체입니다. class DispatchQueue : DispatchObject DispatchQueue Overview 디스패치 큐는 블록객체 형식으로 작업을 제출하는 FIFO 대기열입니다. 디스패치 큐는 작업을 serially또는 concurrently 실행합니다. 디스패치 큐에 제출된 작업은 시스템에서 관리하는 스레드 풀에서 실행됩니다. 앱의 매인 스레드를 나타내는 디스패치 큐를 제외하고 시스템은 어떤 스레드를 사용하여 작업을 실행할지 보장하지 않습니다. 작업 항목(Work Item)을 동기synchronously, 비동기asynchronously로 계획할 수 ..
Dispatch 시스템에서 관리하는 디스패치 큐에작업을 전달하여 멀티코어 하드웨어에서 동시에 코드를 실행 Overview GCD라고도 하는 디스패치는 macOS, iOS, watchOS 및 tvOS의 멀티코어 하드웨어에서 동시 코드 실행을 지원하기 위한 체계적이고 포괄적인 개선을 제공하는 언어 특징, 런타임 라이브러리, 시스템 향상을 포함합니다. BSD서브시스템, 코어파운데이션, 코코아APIs는 모두 향상된 기능을 사용하여 시스템과 애플리케이션을 보다 빠르고 효율적으로, 향상된 응답성으로 실행할 수 있도록 확장됐습니다. 하나의 애플리케이션이 여러 코어를 효과적으로 사용하는 것이 얼마나 어려운지 생각해보세요. 컴퓨팅 코어 수가 다른 컴퓨터 또는 해당 코어를 위해 경쟁하는 여러 애플리케이션이 있는 환경에서 ..
Customizing Collection View Layouts flow의 셀 크기를 변경하거나 모자이크 스타일을 구현 Overview 간단한 그리드에 UICollectionView셀을 배치하려면 UICollectionViewFlowLayout을 직접 사용할 수 있습니다. 더 여러가지를 표현하려면 UICollectionViewLayout를 상속하여 고급 레이아웃을 만들 수 있습니다. 이 샘플 앱은 두 가지 커스텀 레이아웃 서브클래스를 보여줍니다. 1. ColumnFlowLayout UICollectionViewFlowLayout은좁은 화면을 위한 목록 형식으로 셀을 정렬하거나 넓은 화면을 위한 그리드로 셀을 정렬하는 서브클래스입니다. 아래 “For a Simple Grid, Size Cells Dynam..