일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- scrollview
- async
- 가상 메모리
- 데드락
- 프로세스 스케줄링
- 운영체제
- Apple Developer Academy
- Linked List
- COLOR
- 앨런
- 상호배제
- 인프런
- SwiftUI
- 비동기
- 오브젝트
- UserDefaults
- struct
- IOS
- deadlock
- Algorithm
- 동시성
- core data
- @state
- Swift
- 100 days of SwiftUI
- decode
- 알고리즘
- forEach
- 동기화
- Codable
- Today
- Total
목록인프런 (6)
기어가더라도 제대로
목차 디스패치 그룹의 개념 디스패치 그룹의 사용 디스패치 그룹과 동기함수 디스패치 그룹과 비동기함수 (참고) Dispatch workItem (심화) Semaphore의 이해 디스패치 그룹의 개념 여러 스레드로 보낸 그룹으로 묶인 작업들이 대략적으로 언제 끝나는지 알고 싶을 때 사용 예) 이미지 다운로드가 다 완료된 시점에서 이미지를 활용하는 뷰 띄우기 작업을 큐에 보낼 때 해당 작업(Group1)의 꼬리표를 달아주고 모든 작업이 끝났을 때 `.notify(queue:)` 를 이용해서 완료시 할 작업을 설정 동기적인 기다림 모든 작업이 완료될 때까지 현재 대기열을 차단하는 동기적인 방법 `DispathGroup().wait` 만약 작업이 완료되길 기다리는 것을 동기적으로 ..
상단에서 weak self 를 선언하면 내부 클로저에서도 자연히 적용이 되는데 왜 그렇게 되는지를 알아보자. 예를 들어 메서드로 클로저를 호출하는 뷰컨이 있다고 가정하자. 전역 함수로 이 뷰컨을 생성해서 클로저를 품고 있는 메서드를 실행한다면 func localSomething() { let vc = ViewControler1() vc.doSomething() } class ViewController: UIViewController { let name: String = "뷰컨" func doSomething() { let nameClosure = { [weak self] in print(self?.name) }() } } 위의 함수를 호출했을때 doSomething() 메서드가 호출..
목차 1. 메인큐 2. 글로벌큐 3. 커스텀큐 4. 오퍼레이션 작업의 특성에 따라서 원하는 큐로 보내면 된다. 각 큐가 어떤 식으로 일을 처리하는 지 알고 있으면 좋다. 메인 큐 유일한 한개 직렬큐(시리얼큐) 메인스레드 이용 1번 스레드는 메인 스레드이자 메인큐이다. `DispatchQueue.main.async { }` 처럼 사용 이런 식으로 사용하는데 메인쓰레드에서 사용한다. 예를 들어 우리가 일반적으로 사용하는 명령들은 모두 원래는 이렇게 사용하고 있었다. Swift의 기본 코드는 기본적으로 메인 스레드에서 동작한다. 하지만 명시적으로 저렇게 선언하면 에러가 나는데, 그 이유는 다음에 이야기 // 원래 사용하는 방식 print("print something") // Swift가 내부적으로 처리하는 ..