오늘은 https://github.com/JeaSungLEE/iOSInterviewquestions 관련 포스팅 세 번째 시간이다. 굉장히 오랜만에 포스팅을 다시 재개하려고 한다 . . .
Scene Delegate에 대해서 설명하라
는 내가 따로 블로그에 정리를 해두었기에 ..
https://sozohoy.tistory.com/29
[iOS] SceneDelegate란 ?
오늘은 sceneDelegate에 대해서 정리해보겠다. SceneDelegate는 iOS 13에 AppDelegate의 일부 역할을 담당하게 되었고, 그 이유는 iPad-OS에 도입된 다중 창 지원 기능으로 인해 역할을 일부 분할하게 되었다
sozohoy.tistory.com
UIApplication 객체의 컨트롤러 역할은 어디에 구현해야 하는가?
--> 질문을 이해하지 못함.
App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하라
- Active : Foreground에서 running되고, 사용자에게 event를 수신하는 상태. Active 상태가 되려면 무조건 Inactive 상태를 거쳐야 함.
- InActive : app이 실행 중이지만, event를 받을 수 없는 상태.(전화, 알림 등)
- Backgruond : 홈화면으로 나가거나 다른 앱으로 전환하여 현재 앱이 실행 되지 않는 상태. 음악 앱을 꺼도 음악이 나오고, 대량의 데이터를 홈화면으로 나가도 받아지는 경우를 Background-running에서 할 수 있음.
- Suspended : app을 다시 실행했을 때 최근 작업을 빠르게 로드하기 위해 메모리에 관련 데이터만 저장되어 있는 상태. suspended 상태의 앱은 iOS의 메모리가 부족해지면 가장 먼저 메모리에서 해제 됨.
- Not running : 앱이 실행되지 않았거나, 종료된 상태.
https://velog.io/@rnfxl92/%EC%95%B1-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0-Application-Life-Cycle
NSOperationQueue 와 GCD Queue 의 차이점을 설명하라
NSOperationQueue와 GCD(Grand Central Dispatch)는 iOS의 멀티스레딩 방법이다.
(멀티스레딩 : 하나의 프로그램에 동시에 여러개의 일을 수행할 수 있도록 해주는 것. 스타크래프트의 캐리어는 프로세서, 인터셉터는 스레드! https://ggodong.tistory.com/25)
멀티스레딩이란?
멀티 스레딩이란? 하나의 프로그램에 동시에 여러개의 일을 수행할 수 있도록 해주는 것입니다. 스레드란 프로세스 내에서 일을 처리하는 세부실행 단위를 말하죠 멀티스레딩의 정의는 스타크
ggodong.tistory.com
NSOperationQueue는 Obj-C 기반으로 만들어진 high-level API이고 GCD는 C 기반의 low-level API이다
NSOperationQueue
- NSOperation 객체의 우선순위 및 준비 상태에 따라 대기열에 있는 객체를 실행. Operation Queue에 추가된 작업은 작업이 완료될 때 까지 대기열에 남음. 작업이 추가된 후에는 대기열에서 직접 제거할 수 없다.
- 중간에 Operation Queue를 중지시키면 메모리 잠금 발생.
- NSOperations, NSOperationQueue를 사용할 때 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 및 메모리 등)가 발생.
- KVO(Key-Value Obesrving) 사용이 가능(GCD와의 차이점. GCD는 사용 불가)
- 작업 간의 의존성 --> 어떤 작업을 다른 작업이 성공적으로 수행된 후에 실행할 수 있게 하는 작업의 계층을 만들 수 있음
GCD(Grand Central Dispatch) Queue(Dispatch Queue)
- 동시성 모델을 매우 간단하게 사용할 수 있는 low-level C 기반 API
- 앱의 메인 스레드 또는 백그라운드 스레드에서 작업의 실행을 직렬 또는 동시에 관리하는 객체.
- 작업 항목을 동기 or 비동기적으로 예약.
--> 동기적 : 여러 가지 작업을 순서대로 실행 / 비동기적 : 모든 동기 작업이 완료되기 전에 추가 스레드의 작업을 비동기로 실행해서 작업을 병렬적으로 실행
- 메인 큐에서 작업 항목을 동기적으로 실행하면 교착상태 발생.
상황에 맞는 멀티스레드 방법을 사용하는 것이 좋겠다.
GCD API 동작 방식과 필요성에 대해 설명하라
Queue - FIFO(First-In-First-Out) 방식으로 동작.
- Serial - Sync : 직렬 동기
- Serial - Async : 직렬 비동기
- Concurrent - Sync : 병렬 동기
- Concurrent - Async : 병렬 비동기
의 네가지 속성의 큐를 만들 수 있다.
필요성
- 간단한 비동기 작업의 경우 GCD 이용이 구현이 쉽다.
- NSOperationQueue보다 빠르고 오버헤드가 적기 때문에 복잡한 로직이 아니면 GCD 사용이 좋음
- 데이터를 불러오지 않았는데도 앱에서 View와 데이터를 표현할 때 에러 발생하므로 필요함.
https://github.com/iOS-SOPT-iNNovation/iOS_Traning/issues/8
오늘은 여기까지. 그동안 많이 밀렸으나 시간을 잘 쪼개서 작성해보도록 하자..!
'iOS & Swift' 카테고리의 다른 글
[iOS] iOS 인터뷰 질문 - 5 (0) | 2022.08.22 |
---|---|
[iOS] iOS 인터뷰 질문 - 4 (0) | 2022.08.01 |
[iOS] SceneDelegate란 ? (0) | 2022.05.23 |
[iOS] iOS 인터뷰 질문 - 2 (0) | 2022.05.17 |
[iOS] iOS 인터뷰 질문 - 1 (0) | 2022.05.11 |