⭐️ 개발/iOS Concurrency
[GCD] Swift Concurrency - GCD
Swift Concurrency 1. GCD 2. OperationQueue : 내부적으로 GCD 기반으로 이루어져 있음 3. Async/Await : iOS15~ 나온 새로운 기술 비동기를 위한 아이덜~ serial/Main + Sync serial/Main + Async concurrency/Global + Sync concurrency/Global + Async Global Quality of Service - QoS DispatchGroup - 동기 DispatchGroup - 비동기 경쟁상태 요약 코드 참고 : https://github.com/heerucan/iOS-Begin-Again/commit/9a9e19fd71746fb2c1f49c8441dd4a9f72cb6791 🚫 1. Serial/..
[GCD] Dispatch Group
Dispatch Group 작업들의 모음, 그룹지어진 작업들이 어느 시점에 모두 완료되는 지가 관심사 1). 동기적인 함수 작업들이 완료될 때 2). 비동기적인 함수 작업들이 완료될 때 (주의!!) 서로 같은 색끼리 유사한 작업인데, 보라색/하늘색/빨간색 작업이 끝나는 시점을 아는 것이 DispatchGroup 작업을 그룹 짓고, 각 그룹별로 끝나는 시점을 알고 싶다!!!!! 특정 그룹의 모든 작업이 완료된 시점을 활용해서 무언가를 하고 싶다 이거임. 왜 이 개념이 필요할까? 예를 들면, 여러 애니메이션 효과가 겹쳐 있을때, 애니메이션이 모두 종료된 시점을 알고 싶다. 런치스크린 후에 앱 첫 화면에 브랜드 이미지가 다운로드가 덜 되어 있는 상황이라면 사용자가 에러라고 인식할 수도 있을 것임 첫 화면을 띄..
[GCD] weak self
ARC, 클로저의 캡처 리스트 ARC Automatic reference Counting heap(클래스) 메모리에 할당되는 메모리 관리를 위해 나를 가리키는 녀석이 몇 개이냐! 0개이면 heap 메모리에서 사라지게 하는 것이 ARC 모델의 핵심 - 클래스의 인스턴스 weak, unowned로 선언 시에 reference counting이 일어나지 않도록 방지 - 클로저 클로저의 캡처리스트 내에서 weak, unowned를 선언해서 RC가 올라가지 않도록 함 우선 먼저 weak self를 붙여주지 않은 경우다. 이 경우에는 강한 참조가 일어날 것이다. class ViewController: UIViewController { var name: String = "뷰컨" func doSomething() { ..
[GCD] 섹션 1~3 요약정리
섹션0. GCD/Operation에 앞서 대기행렬(큐) GCD(=DispatchQueue)와 Operation Queue 2가지 종류가 있다. GCD는 간단한 일을 하고, 함수를 사용하는 메소드 위주의 작업을, Operation은 복잡한 일을 위주로 한다. GCD를 기반으로 해서 여러가지 기능이 추가되어 Operation이 나온 것이다. 그러면 스레드는 뭘까? 스레드는 일하는 녀석이다. 그동안 우리는 스레드가 여러개인데도 프로그래밍을 잘못해서 하나의 스레드만 사용한 것이다. 그치만 우리가 짠 앱 수준에서는 충분히 스레드 하나로 처리가 가능한 정도였다. 그러면 어떻게 다른 스레드로 작업을 분산시켜서 동시에 일을 하게 할 수 있을까? 답은, 대기행렬(큐)에 보내기만 하면 된다. 보내면 알아서 대기행렬을 사용..