foreground, background, instance 메서드, class 메서드, static 메서드

Groot·2022년 11월 25일
0

TIL

목록 보기
103/153
post-thumbnail
post-custom-banner

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 면접스터디

📍 앱이 foreground에 있을 때와 background에 있을 때 제약사항

  • 앱이 백그라운드에 있을 때 가능한 한 적게 수행해야 하며 가급적 아무 작업도 수행하지 않는 것이 좋습니다.
  1. Not Running
  • App을 실행하지 않은 상태로서, App이 실행되기전 상태 또는 실행되었지만 System에 의해 종료된 상태입니다.
  1. Foreground
  • App이 실행되어 사용자에게 보여지고 있는 상태입니다.
  • 오직 하나의 App만 Foreground 상태를 가지며 inActive와 Active의 두가지 상태로 나뉘어집니다.
  1. InActive : Foreground 상태에서 전화가 왔을때, 잠금상태, 멀티태스킹 스크린에서는 InActive 상태를 가집니다.
  2. Active : inActive 상태가 아닌 상태에 해당합니다.
  3. Background
  • Foreground 상태에서 HomeScreen으로 이동한 상태입니다.
  • Background 상태로 전환되기 전에 호출된 Task가 끝나지 않은 경우 Background 상태에서도 여전히 실행됩니다.
  • Background 상태로 전환된 후 호출된 Task는 App이 Foreground 상태로 전환된 후에 실행됩니다.
  1. Suspend
  • App이 Background 상태로 전환된 후 더 이상 작업을 수행하지 않으면 System에서 App을 Suspend 상태로 바꾸게 됩니다.
  • App은 여전히 메모리에 존재하며 Suspend 상태가 될 당시의 상태를 저장하고 있지만, CPU나 배터리를 소모하지 않습니다.
  • Suspend 상태의 App은 Foreground 상태의 App을 위해 메모리 부족 등의 이유로 System에 의해 언제든지 종료됩니다. 이후 App을 실행하면 이전 상태의 화면은 나오지 않고 App이 재시작됩니다.

🔗 앱이 백그라운드로 이동하면 시스템에서 호출하는 메서드

  • app delegate’s applicationDidEnterBackground: 메서드를 호출
  • 이 메서드는 작업을 수행하고 반환하는 데 5초가 걸림
  • 해당 메서드가 반환된 직후 시스템은 앱을 일시 중단 상태로 전환

🔗 BackgroundTasks Framework/iOS 13부터 지원

  • 앱이 백그라운드에서 작업을 수행할 수 있게 시스템에게 요청하는 걸 도와주는 프레임워크
  • Info.plist에 허용된 작업 식별자 목록을 등록하여 백그라운드에서 실행되는 작업을 제어

📍 instance 메서드, class 메서드, static 메서드

  • instance 메서드는 타입을 init 해야 사용할 수 있는 메서드
  • static 메서드, class 메서드는 인스턴스화 하지 않고 타입 자체로 호출이 가능한 타입 메서드
  • class 메서드는 orverride가 가능하지만, static 메서드는 orverride가 불가능 하다.
  • 타입 메서드 내부에서 instance 메서드는 사용할 수 없다. 하지만, instance 메서드에서 타입 메서드 사용이 가능하다.
profile
I Am Groot
post-custom-banner

0개의 댓글