앱이 foreground에 있을 때와 background에 있을 때 어떤 제약 사항이 있나요?
- Foreground는 메모리 및 기타 시스템 리소스에 높은 우선순위를 가지며 시스템은 이러한 리소스를 사용할 수 있도록 필요에 따라 background 앱을 종료한다.
- Background는 가능한 적은 메모리 공간을 사용 해야한다.
따라서, 사용자의 이벤트를 받는데에 제약사항이 있다.
(시스템 리소스 해제, 메모리에서 해제 후 데이터를 디스크에 작성)
-
not runnig : 실행중이지 않던 프로그램이 실행이 된다
-
foreground: 앱이 실행 된다
-
background 홈버튼 눌러서 내리기 (끈거 x. 코드는 실행되고 있음)
-
suspended 상태 : background로 실행되는 앱은 일정한 이유에 따라 OS가 앱을 끈다. 코드 실행하지 않는 상태로 변경
앱이 In-Active 상태가 되는 시나리오
- App이 실행 중이지만 이벤트를 받지 않는 상태
- 다른 상태로 넘어가기 전에 앱은 반드시 이 상태를 거침
- 전화나 메시지 같은 interrupt 발생 시
- 미리알림 같은 특정 알림창이 화면을 덮어서 앱이 실질적으로 event를 받지 못하는 상태 등
instance 메서드와 class 메서드의 차이점을 설명하시오.
instance 메소드
- 클래스, 구조체 또는 열거체의 인스턴스에 속해있는 함수를 말한다.
- 일반적으로 static으로 선언되지 않은 class나 struct, enum의 메소드이다.
- 사용자 정의 타입을 실체화 하여 생성된 인스턴스를 이용하여 사용한다.
class 메소드
- 메모리에 인스턴스가 올라가 있지 않은 상태에서 타입만으로 사용할 수 있는 메소드이다.
- 일반적인 선언 방법으로 class, static이 있다.
- 타입 메서드에서는 타입 멤버(프로퍼티&메서드)만 사용 가능하고, 같은 타입 멤버는 타입 이름 없이 접근 가능하다. -> 인스턴스가 생성 되어야만 저장 공간을 갖는 인스턴스 멤버(프로퍼티, 메서드)에는 접근할 수 없다.
- 반대로, 인스턴스 메서드에서는 인스턴스 멤버(프로퍼티&메서드)를 사용할 수 있고, 타입 멤버도 타입만 알면 접근 가능하다.
class메서드와 static메서드의 차이점을 설명하시오
class method
- class의 경우에는 서브클래스에서 상속을 받아서 overriding이 가능하다.
- final class을 사용해 더이상 overriding이 불가능하게 선언 가능하다.
static method
- 서브클래스에서 overriding 및 상속이 불가능하다.
- 클래스 내에서 static 메서드와 class 메서드는 같은 의미다.
즉, 클래스에 한정적으로 static 메서드를 오버라이드 가능합니다.
foreground background
소들이 메소드
메서드 종류