[Deprecated] UIKit : keyWindow

Sean·2023년 5월 26일
0

Deprecated 대응

목록 보기
2/2

누군가에게 알려주기 보다는 나 스스로 정리 하며 언젠가 다시 사용할 때를 대비하는 글을 작성할것이다.

코드를 작성하다 만나게 되는 Deprecated된 요소들을 앞으로 어떻게 사용해야 할 지 알아보는 게시글이 될 것이다.

Deprecated

  • 중요도가 떨어져 더 이상 사용하지 않거나 아직은 사용하지만 새로운 기능의 존재로 사라지게 될 기능

시작

Property: keyWindow

버전

  • iOS 2.0 ~ 13.0
  • iPadOS 2.0 ~ 13.0

용도

  • 이 프로퍼티는 가장 최근에 보낸 makeKeyAndVisible()메시지를 윈도우즈 배열의 UIWindow 오브젝트를 보유한다.

선언

var keyWindow: UIWindow? { get }

분석

  • 해당 프로퍼티의 경우 13.0 부터 Deprecated 되어 있기에 3의 방법을 사용해서 처리를 해주면 된다.
  • 실제 코드에서는 해당 프로퍼티를 어떤 방식으로 사용을 할 지 몰라서 일단 공부하며 알게 된 모든 방법에 대해서 다 작성했다.
  • 대체한 프로퍼티가 또 Deprecated 되기에 해당 부분에 대해서는 따로 작성이 필요한 것으로 보인다.

1. 기존 사용 방법

UIApplication.shared.keyWindow?.rootViewController = vc

2. 변경될 사용 방법

iOS 13.0 이상에서는 이렇게 사용했다.

UIApplication.shared.windows.first?.rootViewController = vc

하지만 windows 가 15.0 부터 Deprecated 되기에 해당 부분을 다음과 같은 방법으로 변경해야 한다.
(해당 방법에 대해서는 view에서 접근하는거 말고 UIApplication 으로 접근하는 방법을 알게 되면 해당 부분에 대해서 수정 작업이 진행될 것이다.)

view.window?.rootViewController = vc

3. 버전 고려한 방법

if #available(iOS 15.0, *) {
	view.window?.rootViewController = vc
} else if #available(iOS 13.0, *){
	UIApplication.shared.windows.first?.rootViewController = vc
} else {
	UIApplication.shared.keyWindow?.rootViewController = vc
}

기타

당연 틀린 부분 지적은 감사하나 비난은 정중하게 사양하겠다.

profile
"잘 할 수 있을까?"를 고민하기보단 재밌어 보이는건 일단 하고, 잘하기 위해 그냥 계속합니다.

0개의 댓글