AppDelegate 메서드, Delegate 패턴, Singleton 패턴

Groot·2022년 12월 2일
0

TIL

목록 보기
108/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 면접스터디

📍 상태 변화에 따라 다른 동작을 처리하기 위한 앱델리게이트 메서드들을 설명하시오

//애플리케이션이 실행된 직후 사용자의 화면에 보여지기 직전에 호출되는 메서드
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool	

//애플리케이션이 최초 실행될 때 호출되는 메서드 
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool		

//애플리케이션이 InActive 상태로 전환되기 직전에 호출되는 메서드 예) task 일시정지, 타이머 비활성화, 일시정지(게임) 등
func applicationWillResignActive(_ application: UIApplication)	

//애플리케이션이 백그라운드 상태로 전환된 직후 호출되는 메서드
func applicationDidEnterBackground(_ application: UIApplication)	
//애플리케이션이 Active 상태가 되기 직전, 화면에 보여지기 직전에 호출되는 메서드
func applicationWillEnterForeground(_ application: UIApplication)	

//애플리케이션이 Active 상태로 전환된 직후 호출되는 메서드
func applicationDidBecomeActive(_ application: UIApplication)

//애플리케이션이 종료되기 직전에 호출되는 메서드
func applicationWillTerminate(_ application: UIApplication)

📍 Delegate 패턴을 활용하는 경우를 예를 들어 설명하시오.

🔗 Delegate 패턴이란?

  • 특정 객체가 모든 일을 처리하는 것이 아니라 처리 해야 할 일 중 일부 작업을 다른 객체에 넘기는 것
  • 어떤 객체가 과도하게 많은 일을 처리하거나 맡은 일을 처리하지 못 하는 상황에서 다른 객체에게 일을 위임하는 형태

🔗 Delegate를 활용하는 예

  • 하위에서 상위로의 데이터 전달에 사용된다
    • 하위는 상위를 모르는 상태로 일을 데이터를 전달해야 하기 때문에 메서드의 매개변수로 데이터를 전달하는 형태로 많이 사용한다.

🔗 UIKit에서 많이 사용.

  • AppDelegate, SeceneDelegate, TableViewDelegate 등
  • Delegate 패턴을 이용함으로써 실제 함수의 호출 시점에 개발자가 원하는 커스텀 이벤트를 실행할 수 있기 때문에 사용한다?

https://developer.apple.com/documentation/swift/using-delegates-to-customize-object-behavior

🔗 Delegate 패턴의 리스크

  • 클래스로 구성하게 되면 서로가 서로를 참조하기 때문에 강한 참조가 일어날 수 있을것 같다.
  • 그런 부분은 weak를 사용해서 약한 참조 형태로 delegate를 선언해줘야 한다.

📍 Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.

🔗 Singleton 패턴이란?

  • 특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체
  • 여러 개의 객체가 같은 객체로부터 동일한 상태의 정보를 받아와야할 때 사용
  • 객체의 인스턴스를 하나만 사용하는 형태로 새로운 인스턴스를 만들 수 없고 모든곳에서 그 객체를 참조할 수 있다.

🔗 Singleton를 활용하는 예

  • NSCash에 이미지를 넣고 이미지 데이터를 모든 뷰에서 참고해야 할 때 사용.

🔗 UIKit에서 많이 사용.

  • 사운드 효과를 재생하는 오디오 채널이나 HTTP 요청을 만드는 네트워크 관리자와 같이 앱 전체에서 공유되는 리소스 또는 서비스에 대한 통합 액세스 포인트를 제공하기 위해서

https://developer.apple.com/documentation/swift/managing-a-shared-resource-using-a-singleton

🔗 Singleton 패턴의 리스크

  • 하나의 인스턴스를 사용하기 때문에 데이터 상태를 변경 시 모든 영역에서도 동일하게 변경되기 때문에 주의깊게 사용해야 할 것 같다.
  • 비동기 처리를 한다면 동시에 접근하게 되는 문제가 생길수도 있을 것 같다.
profile
I Am Groot

0개의 댓글