앱은 작성한 코드와 시스템 프레임워크 간의 상호작용의 결과물이다.
iOS 프레임워크는 MV와 Delegation 디자인 패턴에 의존하고 있다.

iOS는 Unix 기반이다. 그리고 Objective - C 는 C 언어에서 파생된 언어이다.
그리고 C언어는 main함수에서 프로그램이 시작된다.
그러므로 Unix 의 main 의 형태인 int main(int argc, char *argv[]) 에서 앱이 시작된다.
- UIApplicationMain 함수
- 생명주기를 담당하게 되는 AppDelegate 를 메모리상에 올려놓음.
- 앱에 중요한 객체를 생성(AppDelegate, UIApplication 등등)
- 스토리보드에서 UI를 로딩
- 앱의 초기 셋팅값(info.plist)를 로딩
- 앱을 Run loop 에 올려놓음.

- UIApplication 객체
- Event loop 를 관리
- Delegate에 앱 상태변화나 푸쉬같은 이벤트를 알려줌.
- App Delegate 객체
- UIApplication객체와 함께 앱 초기화, 앱 상태변화, 많은 high-level 이벤트 등을 관리
- 앱 당 하나만 존재
- Data Model 객체
- 앱의 콘텐츠를 저장하는데 사용됨.(디비 저장)
- 앱의 Data Model 객체의 데이터의 일부를 관리하기 위해 document 객체를 사용
- ViewController 객체
- 앱의 내용을 화면에 나타내는 기능을 함.
- 하나의 View 와 이 View의 subview들을 관리함.
- 화면에 View가 표시될때 window에 설치하여 보여지게 해줌
- UIWindow 객체
- 화면에 나타나는 View를 관리.
- 대부분의 앱은 MainScreen 에 해당하는 한개의 Window 를 가짐.
AppDelegate 의 메소드들
대부분의 상태변화는 Appdelegate객체의 메소드 호출을 거쳐갑니다. 아래의 메소드는 AppDelegate 에서 사용되는 메소드이고, 앱의 상태변화에 따라 처리를 할수 있게 도와준다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- 어플리케이션이 처음 실행되어 메모리상에 올라가게 될때 호출됨.
- (void)applicationDidBecomeActive:(UIApplication *)application {
- 앱이 Foreground 로 올라올때(Back -> Foreground 올때) 호출됨
- 최초 실행시에도 호출됨
- (void)applicationWillResignActive:(UIApplication *)application {
- 앱이 Foreground 에서 다른 상태로 전환 될때 (Foreground -> Back) 호출됨
- (void)applicationDidEnterBackground:(UIApplication *)application {
- 앱이 Background 로 들어갔을때 호출됨
- (void)applicationWillEnterForeground:(UIApplication *)application {
- (void)applicationWillTerminate:(UIApplication *)application {

- 결론은
- 앱을 클릭한다
- 어플리케이션의 main 실행
- main 에서 UIApplicationMain() 실행
- AppDelegate 의 applicationDidFinishLaunching: 호출
- applicationDidFinishLaunching 실행 후 EventLoop 으로 들어감
- 이벤트 처리함.
- 앱 종료 하기
- AppDelegate 의 applicationWillTerminate: 호출
- 앱 종료됨.
검색 : life cycle life-cycle lifeCycle 라이프 사이클
Written by Brody Byun
Please Do not steal content from our website.
Please let me know if you want to take the post.(email or reply)