일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- clean architecture
- Clean Code
- Observable
- Refactoring
- 클린 코드
- swiftUI
- 리펙터링
- uiscrollview
- ios
- uitableview
- Human interface guide
- MVVM
- Protocol
- map
- rxswift
- tableView
- 애니메이션
- swift documentation
- Xcode
- RxCocoa
- UITextView
- 리펙토링
- ribs
- HIG
- collectionview
- 스위프트
- 리팩토링
- SWIFT
- combine
- UICollectionView
- Today
- Total
목록concurrency (10)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GAGVl/btsHbVppOqV/Sy1dh5bR6xlNxKyvn6Tm1k/img.png)
@Sendable 개념Sendable이라는 의미는 "전달 할 수 있는"이라는 의미이지만, 생략된 의미가 존재@Sendable는 불변성을 보장하는 "전달 할 수 있는"의 의미로 사용동시성 프로그래밍에서 핵심은 프로퍼티들의 '불변성'을 유지하는 것프로퍼티들이 '불변성'을 만족한다면, 동시성 프로그래밍에서 쉽게 파라미터, 클로저 등에 넘겨서 처리하는 것에 race condition, dead lock, memory conflict 등의 문제등을 신경쓰지 않고 편하게 프로그래밍이 가능@Sendable의 목적은 값을 변경할 수 없도록 강제화하는것예제특정 closure가 있을 때 이 closure에서는 전역변수인 age값 수정이 가능class ViewController: UIViewController { va..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wyW3U/btswcNIBwUu/GTp6RJvsF9fLFKA8Xy6Fk1/img.png)
1. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법 2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리 * 해당 글에서는 간단한 사용법만 살펴보기 때문에, 개념적인 부분은 이전 포스팅 글 참고 동시 처리 Async, Await를 사용하면 비동기 작업을 completion 클로저 블록 없이 한줄로 처리가 가능 let imageUrlString = "https://images.dog.ceo/breeds/australian-shepherd/pepper.jpg" guard let url = URL(string: imageUrlString) else { return } Task { let image = try await loadImage(url: u..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ry2eF/btsv8UIuNjT/pnSTB4i96DYTMIpwrbriq1/img.png)
1. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법 2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리 * 해당 글에서는 간단한 사용법만 살펴보기 때문에, 개념적인 부분은 이전 포스팅 글 참고 Async, Await 기초 사용 방법 ex) Async, Await를 사용하여 url을 가지고 특정 이미지 불러오기 정의부분 함수 리턴 화살표 키워드 "->" 왼쪽에 async 를 붙임 다른 비동기 함수를 호출할 때 await를 붙여서, completion 클로저가 아닌 그냥 일반 코드 작성하듯이 구현 func loadImage(url: URL) async throws -> UIImage { let (data, _) = try await URLSes..
기본지식) sync, async, serial, concurrencysync, asyncsync - 해당 작업이 끝날때까지 대기async - 대기하지 않음비동기가 필요한 이유? 대용량 이미지 파일 다운로드 시 기다리면 UI멈춘것처럼 보임serial, concurrencyserial - 하나의 스레드로 처리concurrency - 여러개의 스레드로 작업을 분산각각 독립적이지만 유사한 여러개의 작업을 처리하는 경우 (당근 마켓에서 반복적인 cell들의 물품 이미지 다운)async vs concurrency 차이점?async는 일의 시작 순서가 순서대로처리 하지 않음concurrency는 일의 시작 순서는 차례대로 하지만 동시에 처리DispatchQueue.main.sync 사용 주의 사항deadlock 걸리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bp6SIe/btrSHJEy3Ka/gq3zKpjvid89nUZFAkXhSK/img.png)
1. Swift Concurrency 개념 - async, await, Task, async let, Actor 2. Swift Concurrency 개념 - async, await를 이용하여 api 호출해보기 Async, Await 없는 API 호출 모델 준비 struct AlbumResult: Codable { let results: [Album] } struct Album: Codable, Hashable { let collectionId: Int let collectionName: String let collectionPrice: Double } 구현 enum APIError: Error { case invalidURL case noData } enum API { static func fetchA..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQJ9Qq/btrSeN9Wt5o/yCydA9KCzxGEQBZC2UUvw0/img.png)
1. Swift Concurrency 개념 - async, await, Task, async let, Actor 2. Swift Concurrency 개념 - async, await를 이용하여 api 호출해보기 async, await 란? iOS13+ 사용 가능 비동기 처리를 위해서 completion closure를 사용하지 않고 async, await 키워드를 사용하여 더욱 가독성 있는 비동기 프로그래밍이 가능한 것 * 구체적인 async, await 내용은 이전 포스팅 글 async, await 사용 방법 참고 async 키워드) 함수 정의 부분, throws 앞에 사용 func fetchItems() async { } func fetchSomeItems() async throws -> String..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cFSu6t/btrI2VVRZ9D/qLWpQdtlhQCKA8Ip2pOxn0/img.gif)
1. Concurrent Programming - NSLock, DispatchSemaphore 사용 방법 2. Concurrent Programming - DispatchSemaphore로 코틀린의 CompletableDeferred 구현방법 3. Concurrent Programming - DispatchQueue의 serial, concurrent, async, sync 이해하고 사용하기 4. Concurrent Programming - Thread Safe Array 구현방법 (DispatchQueue의 barrier 사용) 5. Concurrent Programming - OperationQueue로 동적으로 작업 추가, 취소하는 모듈 구현방법 Operation Queue 동시성 프로그래밍에서 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/G8XoF/btrpBC2CM4f/jE0uJVsxgOwvKWiA9yUpUK/img.png)
GCD대신 NSOperation 사용하는 경우 (= GCD에서 구현하기 어려운 기능) 작업 중 cancel 기능이 필요한 경우 작업 시작전에 특별한 다른 작업이 먼저 실행되게끔 하고 싶은 경우 작업들의 실행에 우선순위를 주어서 실행 순서를 정하고 싶은 경우 Operation을 서브클래싱하여 작업을 cancel, start하는 것과 같이 작업에 대한 상태를 관리하고 싶은 경우 NSOperation NSOperation은 직접 사용할 수 없는 추상 클래스이므로 NSOperation 서브 클래스로 사용 addDependency(op:)메소드를 통해, 어떤 작업 전 다른 것이 먼저 실행됨을 보장할 때 사용 가능 queue의 실행 우선 순위를 정할 수 있는 장점 public enum NSOperationQueue..