iOS 개념정리 - 2

유호준·2023년 1월 16일
0

iOS

목록 보기
3/8

SenceDelegate에 대해 설명하시오.

iOS 13부터 도입된 개념으로써, 앱당 하나의 window만을 가졌던 과거에 비해 앱당 여러개의 scene을 가질 수 있게 되면서 생겼다. Scene에는 UI의 인스턴스를 나타내는 windows와 ViewController들이 들어있습니다. 또한 scene에 해당하는 UIWindowSceneDelgate를 가지고 있어 UIKit과 앱간의 상호작용에 사용됩니다. Scene들은 같은 메모리와 앱 프로세스 공간을 공유하면서 동시에 실행됩니다. 따라서 하나의 앱의 여러개의 scene과 scene delegate 객체를 동시에 활성화할 수 있게 됩니다.

ScenceDelegate는 AppDelegate에서 수행하던 UILifeCycle에 관한 부분을 수행합니다. 이에 따라 AppDelgate에서는 Scene Session을 통해 scene에 대한 정보를 받아 업데이트됩니다.
Scene Session이란 scene 고유의 런타입 인스턴스를 관리하는 객체로, 각 scene의 구성 세부사항을 보유합니다.

AppDelgate가 여전히 하는 것
1. 앱의 가장 중요한 데이터 구조를 초기화하는 것
2. 앱의 scene를 환경설정하는 것
3. 앱 밖에서 발생한 알림에 대응하는 것
4. 특정한 scence, view, ViewController에 한정되지 않고 앱 자체를 타겟하는 이벤트에 대응하는 것
5. 실행시 요구되는 서비스를 등록하는 것

App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.

Not running

앱이 실행중이지 않음

In active

앱은 실행중이나 이벤트가 없는 상태

전화가 오거나 등등

Active

이벤트를 받고있고 발생한 상태

Background

앱이 백그라운드에 있으나 실행중인 코드가 있는 상태

Suspended

앱이 백그라운드에 있고 실행중인 코드가 없는 상태, 기기 자원을 소모하지 않으나 언제든 종료될 수 있다.

NSOperationQueue 와 GCD Queue 의 차이점을 설명하시오.

NSOperationQueue

  • 동시에 실행할 수 있는 연산의 최대 수 지정 가능
  • KVO를 사용할 수 있는 많은 property들이 있음
  • 일시중지, 다시시작, 취소 가능
  • GCD 보다 약간의 오버헤드 발생

GCD Queue

  • C 기반
  • 가벼움

GCD API 동작 방식과 필요성에 대해 설명하시오.

동작방식

  • Serial(직렬) / Concurrent(병렬)
  • Async(비동기) / Sync(동기)

4가지 속성의 큐를 만들 수 있다.

필요성

GCD를 사용한다면 스레드의 생성, 유지, 삭제 등을 개발자가 신경쓰지 않고 올바른 용도의 qos의 DispatchQueue에 작성하면 되고, 스레드 관리와 실행에 대한 책임을 운영체제 레벨로 넘겨버린다.

Global DispatchQueue 의 Qos 에는 어떤 종류가 있는지, 각각 어떤 의미인지 설명하시오.

unspecified

  • legacy
  • qos정보가 없으므로 시스템이 추론해야한다는 것을 의미

background

유저가 직접적으로 인지하지 않고(시간이 중요하지 않은) 작업, 데이터 베이스 미리 가져오기

default

일반적인 작업

utility

  • 수 초에서 수 분에 걸쳐 오랜시간 수행되는 작업, 반응성, 성능, 에너지 효율성 간에 균형을 유지
  • 저전력 모드에서는 중지됨
  • 보통 Progress Indicator와 함께 길게 실행되는 작업, 계산, IO, Networking, 지속적인 데이터 feeding

userInitiated

  • 몇 초 이내의 짧은 시간 내 수행해야 하는 작업, 반응성 및 성능에 중점을 둠
  • 유저가 즉시 필요하긴 하지만 비동기적으로 처리할 작업

    앱 내에서 pdf파일 등을 여는 것과 같은

userInteractive

  • 즉각 반응해야 하는 작업, 반응성과 성능에 중점을 둠
  • 유저와 직접 상호작용하는 UI 업데이트, 에니메이션, UI 반응 관련

iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?

UIKit

Foundation Kit은 무엇이고 포함되어 있는 클래스들은 어떤 것이 있는지 설명하시오.

Foundation Kit는 Cocoa Touch Framework에 포함되어 있는 프레임워크 중 하나로 String, Int 등의 원시 데이터 타입과 컬렉션 타입 및 운영체제 서비스를 사용해 앱의 기본적인 기능을 관리하는 프레임워크

Fundamentals

  • Number, Data, String : 원시 데이터 타입
  • Collection : Array, Dictionary, Set 등과 같은 컬렉션
  • Data, Time : 날짜와 시간을 계산하거나 비교하는 작업
  • Unit and Measurement: 물리적 차원을 숫자로 표현 및 관련 단위간 변환
  • Data Formatting : 숫자, 날짜, 측정값 등을 문자열로 변환 또는 반대 작업

App Support

  • Resources : 애플리케이션의 에셋과 번들 데이터 접근 지원
  • Notification : 정보를 퍼트리거나 받아들이기는 기능 지원
  • App Extension : 확장 애플레이션과의 상호작용 지원
  • Error and Exceptions: API와의 상호작용에서 발생할 수 있는 문제 상황에 대처할 수 있는 기능

File and Data Persistence

  • File System : 파일 또는 폴더를 생성하고 읽고 쓰는 기능 관리
  • Archives and Serialization : 속성목록, JSON, 바이너리 파일들을 객체로 변환 또는 반대 작업 관리
  • iCloud : 사용자의 iCloud 계정을 이용해 데이터 동기화

Delegate란 무엇인지 설명하고, retain 되는지 안되는지 그 이유를 함께 설명하시오.

Delegate란 어떠한 객체가 할 일을 확장해서 대신 처리해주는 역할을 해주는 객체를 의미한다. 객체 간의 결합성을 최소화 시키는 데에 장점이 있다.

Retain?

  • 메모리가 해제되지 않아서 낭비되는 현상을 의미한다.
  • Delgate는 객체이기 때문에 retain현상이 일어난다.

NotificationCenter 동작 방식과 활용 방안에 대해 설명하시오.

  • 등록된 옵저버에게 정보를 broadcast하는 클래스
  • NotificationCenter 클래스는 Notification을 발송하면 Notification Center에서 메시지를 전달할 Observer의 처리가 완료될될 때까지 기다린다.
  • 비동기적으로 사용하려면 NotificationQueue를 사용하면 된다.

동작 방식

  • Listener: notifications를감지
  • Sender : 필요할 때 notification을 보내주는 역할
  • itself : notification 그 자체

활용 방안

  • 키보드가 나타나거나, 데이터 다운로딩이 완료되는 것과 같이 어떤 작업이 완료되거나 특정 이벤트가 발생한 순간을 알기 위해 활용할 수 있다.
  • 한 객체의 변화를 여러 객체들이 관찰해야 하는 경우에 활용할 수 있다.

참고자료

0개의 댓글