1. Bounds 와 Frame 의 차이점을 설명하시오.
모두다 CGSize의 형태로 orign 좌표와 크기 width height가 있다.
하지만 차이점이 있는데 Frame은 상위 뷰를 기준하여 orign 좌표를 정하고 그 위에 크기가 정해지진다.
Bounds는 자기 자신을 기준으로 orign 좌표가 정해지며 그리고 크기가 정해진다. 그래서 orgin 좌표는 default로 (0,0)이다. 그렇기에 orgin 좌표를 바꿀경우 하위 뷰가 이동된것처럼 보이게 된다 이를 활용한것의 예로 scroll View가 있다.
2. Foundation Kit은 무엇이고 어떤 클래스들이 포함되어있는지 설명하세요.
Foundation Kit은 Cocoa Touch framework에 포함되어 있는 프레임워크 중 하나입니다. String, Int 등의 원시 데이터 타입과 컬렉션 타입 및 운영체제 서비스를 사용해 앱의 기본적인 기능을 관리하는 프레임워크입니다.
3.두 개의 UIVIewController간 화면 전환이 이루어질 때의 시나리오를 UIVIewController life cycle과 관련해서 설명해주세요.
View a와 View b가있다고 가정하고
- View a화면 띄우기
◦viewload - viewController의 최상위 view를 로드합니다.
◦viewDidLoad
◦viewWillAppear
◦viewDidAppear
- View b로 전환
◦View a - viewWillDisappear
◦View b - viewDidLoad
◦View b - viewWillAppear
◦View a - viewDidDisappear
◦View b - viewDidAppear
4. 앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?

iOS App인 UIKit App들의 상태는 4가지
- Not Running
- Foreground (Inactive, Active)
- Background
- Suspend
1. Not Running
- App을 실행하지 않은 상태로서, App이 실행되기전 상태 또는 실행되었지만 System에 의해 종료된 상태입니다.
2. Foreground
- App이 실행되어 사용자에게 보여지고 있는 상태입니다.
- 오직 하나의 App만 Foreground 상태를 가지며 inActive와 Active의 두가지 상태로 나뉘어집니다.
- InActive : Foreground 상태에서 전화가 왔을때, 잠금상태, 멀티태스킹 스크린에서는 InActive 상태를 가집니다.
- Active : inActive 상태가 아닌 상태에 해당합니다.
3. Background
- Foreground 상태에서 HomeScreen으로 이동한 상태입니다.
- Background 상태로 전환되기 전에 호출된 Task가 끝나지 않은 경우 Background 상태에서도 여전히 실행됩니다.
- Background 상태로 전환된 후 호출된 Task는 App이 Foreground 상태로 전환된 후에 실행됩니다.
4. Suspend
- App이 Background 상태로 전환된 후 더 이상 작업을 수행하지 않으면 System에서 App을 Suspend 상태로 바꾸게 됩니다.
- App은 여전히 메모리에 존재하며 Suspend 상태가 될 당시의 상태를 저장하고 있지만, CPU나 배터리를 소모하지 않습니다.
- Suspend 상태의 App은 Foreground 상태의 App을 위해 메모리 부족 등의 이유로 System에 의해 언제든지 종료됩니다. 이후 App을 실행하면 이전 상태의 화면은 나오지 않고 App이 재시작됩니다.
5. 상태 변화에 따라 다른 동작을 처리하기 위한 앱델리게이트 메서드들을 설명하시오.
상태 변화: 앱의 라이프 사이클을 의미. 뷰의 라이프 사이클과 다름
- 앱이 처음 시작될 때 실행
launchOptions 앱이 실행되게 된 이유 등이 포함
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
- 앱이 active 에서 inactive로 바뀔 때 실행
홈 버튼을 누르면 App이 포커스를 잃으면서 실행된다고 함
func applicationWillResignActive(_ application: UIApplication)
- 앱이 background 상태일 때 실행
공유자원 해제, 유저 데이터 저장 등의 로직 구현
func applicationDidEnterBackground(_ application: UIApplication)
- 앱이 background에서 foreground로 이동될 때 실행
보통 API를 통해 앱의 상태를 갱신할 때 사용 (버전 체크 등)
func applicationWillEnterForeground(_ application: UIApplication)
- 앱이 active 상태가 되어 실행중 일 때
func applicationDidBecomeActive(_ application: UIApplication)
- 앱이 종료될 때 실행
func applicationWillTerminate(_ application: UIApplication)
잘 보고 갑니다.