분류 전체보기 (54) 썸네일형 리스트형 [iOS] Photos - Asset Loading Asset Loading 이 클래스를 사용하여 이미지, 비디오, 라이브 포토 콘텐츠를 요청할 수 있다. PHImageManager An object that facilitates retrieving or generating preview thumbnails and asset data. : 미리보기 썸네일 및 에셋과 전체 크기의 이미지 또는 비디오 데이터를 검색하거나 생성하는 방법을 제공 class PHImageManager : NSObject func requestImage(for asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: @escaping.. [iOS] Photos - 날짜 순으로 에셋 가져오기 let fetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] let fetchResult = PHAsset.fetchAssets(with: fetchOptions) return fetchResult.firstObject 1. PHFetchOptions 선언하기 ➡️ 에셋 또는 컬렉션 객체를 가져올 때 Photos에서 반환하는 결과에 필터링, 정렬 등 영향을 주는 옵션 2. PHFetchOptions 내 sortDiscriptors 의 key를 "creationDate" 로 지정 3. fetch할 때 해당 PHFetchOption을 등록해 옵션을 .. [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로 비동기 프.. 이전 1 ··· 3 4 5 6 7 다음