← Back to list

Xcode 在 iOS 13 以下手機 build 出現黑畫面

目錄

春麗 S.T.E.M. · 2022-12-07 01:43 · 0 claps · 3.1 min read
#ios-13 #scene-delegate #uiwindow #swift #xcode
Open on Medium ↗
Wiki topics: 📱 · Mobile Development

Xcode 在 iOS 13 以下手機 build 出現黑畫面

目錄

⦿ AppDelegate、SceneDelegate
⦿ 黑畫面、var window: UIWindow?

AppDelegate、SceneDelegate

在 Xcode 11 開始,我們可以看到新建專案裡頭除了原先的 AppDelegate 這個 class,還多了一個 SceneDelegate,這兩個 .swift 的檔案,SceneDelegate 把原先 AppDelegate 在做的部份事情( Scene )攬過來做。

但即便你把下面這兩項都改成 iOS 12 以上。

結果 build 後會出現如下:

跳出無敵多的錯誤,我們看到跟 UIScene 有關的 function,都不適用 iOS 13 以下,在 AppDelegate 裡有兩個,在 SceneDelegate 共有六個(全不能用),於是,我們可以在每條 function 上方加上下面的程式碼:

@available(iOS 13.0, *)

看起來表示 iOS 13.0 以上,下方的 function 才會調用

這條程式碼也可以直接在 class( 即 AppDelegate、SceneDelegate )上方加上,這樣就不用將程式碼灑得到處都是,如下:

@available(iOS 13.0, *)
@main
class AppDelegate: UIResponder, UIApplicationDelegate {

}

@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

}

這也表示,需要在 iOS 13.0 以上的環境調用的 function 才會調用。注意!兩者解釋有些微差別,因為無論如何,在 AppDelegate 中的這個 function:

func application(_ application: UIApplication, 
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

  return true
}

總是會被調用,不過加上 @available(iOS 13.0, *),不代表 iOS 12 就不會調用它,所以我們應該解釋為「需要在 iOS 13.0 以上的環境調用的 function 才會調用」。

黑畫面、var window: UIWindows?

然而停掉 iOS 13.0 以下的錯誤後,你 build 專案後竟然呈現黑畫面,所以我們必須回到 AppDelegate 中,在前述的 function 前面加上一個 property,如下:

    var window: UIWindow?

你曾經在哪裡看過這個 property?對的,在 SceneDelegate 裡就有這個 property,然而,前面說過,SceneDelegate 把 AppDelegate 中關於 Scene 的事情拿去做,可是 iOS 13 以下的專案並沒有 SceneDelegate。

所以 AppDelegate 繼續做苦工,只要在這個 class 裡面加上程式碼,build 專案後就回到正常狀態了,很棒吧!


메타데이터
post_id
df868db7b2a2
slug
xcode-在-ios-13-以下手機-build-出現黑畫面-df868db7b2a2
url
https://medium.com/@cowton0517/xcode-%E5%9C%A8-ios-13-%E4%BB%A5%E4%B8%8B%E6%89%8B%E6%A9%9F-build-%E5%87%BA%E7%8F%BE%E9%BB%91%E7%95%AB%E9%9D%A2-df868db7b2a2
canonical_url
https://medium.com/@cowton0517/xcode-%E5%9C%A8-ios-13-%E4%BB%A5%E4%B8%8B%E6%89%8B%E6%A9%9F-build-%E5%87%BA%E7%8F%BE%E9%BB%91%E7%95%AB%E9%9D%A2-df868db7b2a2
author_url
https://medium.com/@cowton0517
status
ok
fetched_at
2026-07-26 09:46:03