iOS (31) 썸네일형 리스트형 [iOS] Photos Framework Photos Framework iOS 및 macOS에서 사진 애플리케이션, 사진 확장 기능을 지원하는 클래스를 제공 iCloud 사진 라이브러리를 포함하여 사진 및 비디오에 직접 접근 가능 • 화면에 표시, 재생할 Asset을 검색 • 이미지 또는 비디오를 편집 • 앨범, 특별한 순간, iCloud 공유 앨범과 같은 에셋을 사용해 작업 Photos Framework 모델 클래스 1. 에셋 : PHAsset (이미지, 비디오, 라이브 포토) 2. 에셋 컬렉션 : PHAssetCollection (앨범(+스마트 앨범), 특별한 순간 등) 3. 컬렉션 리스트 : PHCollectionList (앨범의 폴더, 사용자가 작업하는 항목, 연도 등) 객체 가져오기 및 변경 요청 이 객체들은 읽기 전용이며 변경할 수 .. [iOS] DispatchQueue로 비동기 프로그래밍 DispatchQueue 작업항목의 실행을 관리하는 클래스 Queue에 추가된 작업항목은 시스템이 관리하는 스레드 풀에서 처리하고, 작업을 완료하면 스레드를 알아서 제거 일반 스레드 코드보다 쉽고, 효율적으로 코드를 작성할 수 있음 서버에서 데이터를 내려받을 때, 이미지나 동영상 등의 멀티미디어 처리와 같이 CPU 사용량이 많은 처리를 별도의 스레드에서 처리 ➡️ 메인 스레드로 결과를 전달해 화면에 표시 DispatchQueue 생성시 Serial이 기본, attribute를 따로 주면 Concurrent 유형으로 바꿀 수 있음 + OperationQueue: Operation을 OperationQueue에 제출하면 Concurrent operation 객체를 만들어 줌 DispatchQueue로 비동기.. [iOS] 서버에 데이터 요청하기 : URLSessionDataTask guard let url: URL = URL(string: " ~~ url ~~ ") else { return } // url에 요청 let session: URLSession = URLSession(configuration: .default) // session을 만들어줌 // dataTask를 만들어 줌 -> url로 요청함 // 뒤의 클로저는 요청에 대한 서버의 응답이 왔을 때 호출될 클로저 let dataTask: URLSessionDataTask = session.dataTask(with: url) { (data: Data?, response: URLResponse?, error: Error?) in if let error = error { print(error.localizedDescripti.. [iOS] URLSession과 URLSessionDataTask URLSession HTTP/HTTPS 를 통해 데이터를 주고받는 API를 제공하는 클래스 애플리케이션이 실행 중이지 않거나, 중단되어있는 동안 백그라운드 작업을 통해 데이터를 다운로드할 수 있음 URLSession API를 사용하기 위해서 애플리케이션은 세션을 생성함 ➡️ 해당 세션은 관련된 데이터 전송작업 그룹을 조정 ex. 웹 브라우저의 경우 탭 당 하나의 세션을 만들 수 있음 각 세션 내에서 애플리케이션은 작업을 추가하고, 각 작업은 특정 URL에 대한 요청을 나타냄 Request 서버로 요청을 보낼 때 어떤 HTTP 메소드를 사용할 것인지, 캐싱 정책은 어떻게 할 것인지 등을 설정 Response URL 요청의 응답을 나타내는 객체 Session의 유형 URLSession API는 세가지 유형의.. [iOS] Grand Central Dispatch (GCD) Grand Central Dispatch 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술 스레드 풀의 관리를 프로그래머가 아닌 운영체제에서 관리 ➡️ 프로그래머가 작업(task)를 비동기적으로 쉽게 사용할 수 있음 프로그래머가 실행할 작업을 생성하고, Dispatch Queue에 추가하면 GCD는 작업에 맞는 스레드를 자동으로 생성해서 실행하고, 작업이 종료되면 해당 스레드를 제거해 줌 DispatchQueue 작업을 연속적 / 동시에 진행하기는 하지만, 언제나 FIFO로 실행됨 Serial Dispatch Queue : 한 번에 하나의 작업만을 실행 ➡️ 해당 작업이 queue에서 제외되고 새로운 작업이 시작되기 전까지 기다림 Concurrent Dispatch.. [iOS] OperationQueue로 비동기 프로그래밍 OperationQueue Operation Queue는 연산(Operation)의 실행을 관리함 queue에 추가한 동작은 직접 제거할 수 없고, 연산은 작업이 끝날 때까지 대기열에 남아 있음 Canceling Operations Operation을 queue에서 제거하기 위해서는 operation을 취소해야 함 취소하는 방법 • Operation 객체의 cancel() 메소드를 호출 • OperationQueue의 cancleAllOperations() 메소드를 호출 ➡️ queue에 있는 모든 operation을 취소 실행 중인 operation의 경우, operation 객체의 취소 상태를 확인 ➡️ 실행 중인 operation을 중지하고 완료 상태로 변경 Operation Queue로 비동기 프.. [iOS] 비동기 프로그래밍과 동시성 프로그래밍 이해하고 시작하기 ! 프로그램 (Program) 보조기억장치에 저장된 실행코드 -> 생명이 없는 상태 프로세스 (Process) 하나의 프로그램이 메모리에서 실행되는 작업 단위 프로세스 관리는 운영체제에서 담당 스레드 (Thread) 하나의 프로세스 내에서 실행되는 작업흐름의 단위 보통 하나의 프로세스는 하나의 스레드를 가지고 있지만, 여러 스레드를 가지고 있기도 함 : 멀티스레딩 메인 스레드 : 프로그램이 실행될 때부터 동작하는 스레드 비동기(Asynchronous) 프로그래밍 작업 진행 중, 특정 작업에서 오랜 시간이 걸린다면 이를 기다리지 않고 바로 다음 작업을 실행할 수 있게 하는 방식 많은 시간이 필요한 작업은 별도의 공간에서 진행하도록 하고 메인 스레드에서는 바로 다음 코드를 실행 ➡️ 병렬 .. 이전 1 2 3 4 다음