개발 일기

AppDelegate ? 본문

Client/IOS

AppDelegate ?

이건욱

AppDelegate란 App에서 해야할 일을 구현하는 내용입니다.

 

@UIApplicationMain을 통해서 UIApplication에 delegate를 사용하겠다는 내용입니다.

 

제일 처음 들어가보면 UIWindow라는 변수가 있습니다.

이 변수는 UIWindow에서 View를 담는 컨테이너의 역할을 합니다. 

 

Storyboard기반의 앱이면 UIWindow 객체를 초기화 해주어야 하며 코드 기반의 경우에는 didFinishLaunchingWithOptions 위치에서 직접 생성을 해야합니다.

 

[예시]

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        guard let window = self.window else { return false }
        
        let appFlow = AppFlow(services: self.appServices)
        
        Flows.whenReady(flow1: appFlow) { root in
            window.rootViewController = root
            window.makeKeyAndVisible()
        }
        
        return true
    }

 

 

[앱 실행 - didFinishLaunchingWithOptions]

앱이 실행하면 호출이 됩니다.

 

기본적으로 반환값은 true이며 App Scheme 설정에서 openURL로 url을 오픈하지 않습니다.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

 

[앱  활성화 - applicationDidBecomeActive]

앱이 화면의 뜬 이후에 실행되는 메소드 입니다.

 

앱에 백그라운드에 간 이후에 포그라운드에 들어올 경우에도 불립니다.

  func applicationDidBecomeActive(_ application: UIApplication) {
        
  }

 

[홈 버튼 - applicationWillResignActive]

App이 화면에 Focus을 잃으면서 실행 되는 메소드입니다.

func applicationWillResignActive(_ application: UIApplication) {}

 

[백그라운드 이동 - applicationDidEnterBackground]

앱이 백그라운드로 이동하여 더이상 앱이 보이지 않을 때 호출이 됩니다.

func applicationDidEnterBackground(_ application: UIApplication) {}

 

[Foreground로 다시 이동 - applicationWillEnterForeground]

앱이 메모리에 살아있었을 때에 다시 실행하면 불리는 메소드입니다.

func applicationWillEnterForeground(_ application: UIApplication) {}

'Client > IOS' 카테고리의 다른 글

UIGestureRecognizerDelegate ?  (0) 2020.05.03
UIPanGestureRecognizer ?  (0) 2020.05.03
UISwipeGestureRecognizer ?  (0) 2020.05.01
ViewController 생명 주기 ?  (0) 2020.05.01
SceneDelegate  (0) 2020.05.01
Comments