Concurrency Swift Concurrency는 비동기 프로그래밍을 지원하기 위한 도구로, 코드를 간결하고 효율적으로 작성할 수 있게 도와줍니다. 이 기능은 async와 await 키워드를 사용하여 비동기 작업을 선언하고 처리할 수 있습니다. Swift Concurrency의 동작 방식에 대해 자세히 알아보면 다음과 같습니다. Structured Concurrency: Swift Concurrency는 구조적 동시성(Structured Concurrency)을 지원합니다. 이는 비동기 작업 간의 종속성을 명시적으로 관리하여 프로그램의 실행 흐름을 제어하는 방법입니다. async let 구문을 사용하여 여러 비동기 작업을 동시에 실행하고, await를 사용하여 해당 작업들이 완료될 때까지 대기할 수..
iOS15에서부터 reconfigureItems를 사용할 수 있습니다. “To update the contents of existing (including prefetched) cells without replacing them with new cells…” cell을 update하기 위해서 reloadItems(\\_:)대신 사용합니다. 새로운 셀로 바꾸는 것이 아니기 때문에 퍼포먼스가 더 좋습니다. “Because this method reconfigures existing cells, the collection view or table view doesn’t call prepareForReuse for each cell dequeued.” 하지만 prepareForReuse가 불리지 않는 다는 점을..
Opaque Type 불투명 유형(opaque type)은 기본 구체적인 유형을 지정하지 않고 프로토콜 또는 프로토콜 구성을 준수하는 유형을 정의합니다. 불투명 유형은 함수 또는 서브크립트의 반환 타입 또는 프로퍼티의 타입으로 나타납니다. 불투명 유형은 튜플 유형 또는 제네릭 유형(배열의 요소 유형 또는 옵셔널 타입의 래핑된 유형과 같은)의 일부로 표시될 수 없습니다. Opaque types have the following form: some constraint constraint은 class 유형, protocol 유형, protocol composition 유형 또는 Any입니다. 값은 listed 프로토콜 또는 프로토콜 구성을 준수하거나 listed 클래스에서 상속되는 형식의 인스턴스인 경우에만 ..
태스크 및 액터를 통해 프로그램을 안전하게 동시에 실행할 수 있는 부분으로 나눌 수 있습니다. 태스크 및 액터의 인스턴스 내부에서 변수 및 프로퍼티 같이 가변 상태를 포함하는 프로그램 부분을 동시성 도메인(concurrency domain)이라고 합니다. 일부 유형의 데이터는 데이터가 가변 상태를 포함하기 때문에 동시성 도메인들 사이에서 공유될 수 없습니다. 하지만 오버래핑 접근에 대해서는 보호되지 않습니다. 한 동시성 도메인에서 다른 도메인으로 공유할 수 있는 타입을 sendable이라고 합니다. 예를 들어, 액터 메서드를 호출할 때 인수로 전달되거나 작업의 결과로 반환될 수 있습니다. 이 장의 앞부분에 있는 예제에서는 동시성 도메인 간에 전달되는 데이터에 대해 항상 안전하게 공유할 수 있는 단순한 값..