Notice
Recent Posts
Recent Comments
Link
투케이2K
7. (ios/swift) 생명 주기 life cycle 라이프 사이클 관리 실시 - AppDelegate , SceneDelegate , ViewController 본문
IOS
7. (ios/swift) 생명 주기 life cycle 라이프 사이클 관리 실시 - AppDelegate , SceneDelegate , ViewController
투케이2K 2021. 10. 16. 21:01[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드 : AppDelegate]
//
// AppDelegate.swift
// testUI
//
// Created by lotecs on 2021/10/16.
//
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("")
print("===============================")
print("[AppDelegate >> didFinishLaunchingWithOptions]")
print("[설명 : 앱 프로세스 완료 및 앱 실행 실시]")
print("===============================")
print("")
// [스레드 시간을 발생시켜 로딩화면 지연 실시 - 3초]
Thread.sleep(forTimeInterval: 3.0)
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
print("")
print("===============================")
print("[AppDelegate >> configurationForConnecting]")
print("[설명 : Scene 만들기 위한 구성 객체 반환 : 스토리보드 , info]")
print("===============================")
print("")
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
print("")
print("===============================")
print("[AppDelegate >> didDiscardSceneSessions]")
print("[설명 : Scene 구성 객체 해제 실시]")
print("===============================")
print("")
}
}
[소스 코드 : SceneDelegate]
//
// SceneDelegate.swift
// testUI
//
// Created by lotecs on 2021/10/16.
//
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
print("")
print("===============================")
print("[SceneDelegate >> willConnectTo]")
print("[설명 : UI창 선택적 구성 및 제공된 UI창에 Scene 연결]")
print("===============================")
print("")
guard let _ = (scene as? UIWindowScene) else { return }
}
func sceneDidDisconnect(_ scene: UIScene) {
print("")
print("===============================")
print("[SceneDelegate >> sceneDidDisconnect]")
print("[설명 : 시스템에 의해서 Scene 해제 : background 상태 및 session 삭제]")
print("===============================")
print("")
}
func sceneDidBecomeActive(_ scene: UIScene) {
print("")
print("===============================")
print("[SceneDelegate >> sceneDidBecomeActive]")
print("[설명 : Scene 활성화 및 사용자 이벤트에 응답 실시]")
print("===============================")
print("")
}
func sceneWillResignActive(_ scene: UIScene) {
print("")
print("===============================")
print("[SceneDelegate >> sceneWillResignActive]")
print("[설명 : Scene 활성 상태 해제 및 사용자 이벤트에 대한 응답 중지]")
print("===============================")
print("")
}
func sceneWillEnterForeground(_ scene: UIScene) {
print("")
print("===============================")
print("[SceneDelegate >> sceneWillEnterForeground]")
print("[설명 : Scene 포그라운드 실행]")
print("===============================")
print("")
}
func sceneDidEnterBackground(_ scene: UIScene) {
print("")
print("===============================")
print("[SceneDelegate >> sceneDidEnterBackground]")
print("[설명 : Scene 백그라운드 실행]")
print("===============================")
print("")
}
}
[소스 코드 : ViewController]
//
// MainController.swift
// testUI
//
// Created by lotecs on 2021/10/16.
//
import UIKit
class MainController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("")
print("===============================")
print("[MainController > viewDidLoad() : 뷰 로드 실시]")
print("===============================")
print("")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("")
print("===============================")
print("[MainController > viewWillAppear() : 뷰 로드 완료]")
print("===============================")
print("")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("===============================")
print("[MainController > viewDidAppear() : 뷰 화면 표시]")
print("===============================")
print("")
// [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 설정 실시]
NotificationCenter.default.addObserver(self, selector: #selector(checkForeground), name: UIApplication.willEnterForegroundNotification, object: nil) // 포그라운드
NotificationCenter.default.addObserver(self, selector: #selector(checkBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) // 백그라운드
// [포그라운드 처리 실시]
checkForeground()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("")
print("===============================")
print("[MainController > viewWillDisappear() : 뷰 정지 상태]")
print("===============================")
print("")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("")
print("===============================")
print("[MainController > viewDidDisappear() : 뷰 종료 상태]")
print("===============================")
print("")
// [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 해제 실시]
NotificationCenter.default.removeObserver(self, name: UIApplication.willEnterForegroundNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil)
}
// [포그라운드 및 백그라운드 상태 처리 메소드 작성]
@objc func checkForeground() {
print("")
print("===============================")
print("[MainController > checkForeground() : 뷰 컨트롤러 포그라운드]")
print("===============================")
print("")
}
@objc func checkBackground() {
print("")
print("===============================")
print("[MainController > checkBackground() : 뷰 컨트롤러 백그라운드]")
print("===============================")
print("")
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
9. (ios/swift) 현재 연결된 네트워크 상태 체크 실시 - NWPathMonitor (0) | 2021.10.17 |
---|---|
8. (ios/swift) timer 타이머 사용해 실시간 반복 작업 수행 실시 (0) | 2021.10.16 |
6. (ios/swift) 앱 디버깅 Signing for requires a development team 에러 해결 (0) | 2021.10.16 |
5. (ios/swift) alert 팝업창 호출 실시 - UIAlertController (0) | 2021.10.16 |
4. (ios/swift) 뷰 화면 전환 (intent) 실시 및 데이터 전송 수행 (0) | 2021.10.16 |
Comments