본문 바로가기

Codes Travel/iOS Boost Course #2019

비동기 프로그래밍

 

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 비동기 프로그래밍 입니다.

 

처음 코딩을 시작하면 가장 이해하기 어려운 개념 중 하나가 아닐까라고 생각합니다. 보통 코딩을 해보면 동기적인 순서대로 로직을 만들어서 구현을 하는데요. 비동기 프로그래밍 개념이 들어가는 순간? 멘붕이 왔던 것 같네요.

 

개념에 대해서 간단히 정리를 해봤습니다.

 

부스트코스 이미지 참고

 

기본적으로 비동기 프로그래밍을 공부하다가 보면 가장 많이 접하게 되는 이미지인 것 같습니다. 데이터의 병렬성 이라고 이름이 붙여져 있는데요. 각각의 작업의 흐름이 동시에 진행되는 것입니다. 

 

iOS 개발자 입장에서는 유저가 보는 화면에 집중해서 구현을 하게되는데요.

 

만약, 앱을 사용하는 유저가 굳이 인지할 필요가 없는 백그라운드 작업의 경우 비동기로 수행 할 수 있도록 구현을 하는 것이 일반적입니다. 유저가 해당 작업이 끝났는지 확인할 필요가 없는데 끝날 때 까지 기다려야 한다면 다른 액션을 수행 할 수 없기 때문에 UI/UX 적으로 봤을 때도 상당히 좋지 않고요.

 

부스트코스 이미지 참고

아래 비동기 프로그래밍 내부적으로도 보면 동시성과 병렬성 작업으로 나뉠 수 있습니다.

 

동시성의 경우 실제로 작업이 동시에 일어나는 것처럼 보이지만, 처리를 해주는 주체는 1개인 경우를 말합니다.

병렬성의 경우 작업이 동시에 진행되면서 N개의 작을 N개의 주체가 각각 처리를 해주는 것이고요.

 

   DispatchQueue.main.async {
                
            }

위 DispacthQueue 를 활용해서 메인스레드에서 동시에 작업을 할 수 있도록 구현한 것이 대표적인 iOS 프로그래밍의 예가 될 수 있을 것 같습니다. 만약 유저가 보고 있는 UI에 바로 보여져야할 작업 수행이 다른 작업에 밀려서? 바로 수행되지 않는다면? 유저는 계속 기다려야하는 불편함을 겪어야 합니다.

 

좀 더 자세한 예는 추후에 정리해서 공유하겠습니다.

 

잘못된 부분이 있다면 꼭 댓글 부탁드립니다!

확인해서 수정하도록 할게요!!

 

끝까지 읽어주셔서 정말 감사합니다 :)

 

부스트코스 iOS 프로그래밍

OperationQueue, 비동기 프로그래밍?

https://www.edwith.org/boostcourse-ios/lecture/16898/

 

[LECTURE] 2) OperationQueue : edwith

Operation Queue 연산(Operation)의 실행을 관리하고 대기열의 동작관리를 하는 Operation Queue에 대해 알아봅시다. 학습 목표 1. 연산객체(Opera... - 부스트코스

www.edwith.org

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

UIScrollView 스크롤 뷰  (0) 2019.08.22
UICollectionView 컬렉션 뷰  (0) 2019.08.22
Photos 프레임워크 활용하기!  (0) 2019.08.22
Codable?  (0) 2019.08.05
UITableView - DataSource & Delegate  (0) 2019.08.05