방금 앱을 개발했지만 시뮬레이터에서 실행하면 디버거 콘솔에 다음과 같이 표시됩니다.
앱 델리게이트는 메인 스토리 보드 파일을 사용하려는 경우 window 속성을 구현해야합니다.
앱 위임 파일이 있습니다. 메시지는 무엇을 의미하며 내 앱이 작동하도록하려면 어떻게해야합니까?
방금 앱을 개발했지만 시뮬레이터에서 실행하면 디버거 콘솔에 다음과 같이 표시됩니다.
앱 델리게이트는 메인 스토리 보드 파일을 사용하려는 경우 window 속성을 구현해야합니다.
앱 위임 파일이 있습니다. 메시지는 무엇을 의미하며 내 앱이 작동하도록하려면 어떻게해야합니까?
var window: UIWindow?
당신의 AppDelegate 클래스에 속성이 있습니까?
답변:
AppDelegate 클래스에 다음 속성 선언이 있는지 확인합니다.
var window: UIWindow?
iOS 13.0 이전에서 프로젝트를 실행하면이 경우 문제가 발생합니다. iOS 13 이상으로 인해 앱이 이전 버전과 다르게 실행됩니다.
iOS 13 이상에서는 UISceneDelegate
개체를 사용 하여 장면 기반 앱의 수명주기 이벤트에 응답합니다.
iOS 12 및 이전 버전에서는 UIApplicationDelegate
개체를 사용하여 수명주기 이벤트에 응답합니다.
iOS 12 및 이전 버전에서 앱을 시작하면 클래스는 클래스 에서처럼 UIApplicationMain
창 속성을 기대합니다 . 따라서 수업에 다음 줄을 추가하면 문제가 해결됩니다 .AppDelegate
SceneDelegate
AppDelegate
var window: UIWindow?
Objective-C 용
@property (strong, nonatomic) UIWindow *window;
여기에서 앱의 수명주기에 대해 자세히 알아볼 수 있습니다 .
XCode 11에서 새 프로젝트를 만들 때이 오류가 발생 SwiftUI
했습니다.. 단계는 다음과 같습니다.이 문제를 해결하려고 고려했습니다.
Application Scene Manifest
에서 항목 삭제Info.plist
SceneDelegate.swift
파일AppDelegate.swift
클래스의 모든 장면 관련 메서드를 삭제했습니다.var window: UIWindow?
속성AppDelegate.swift
이 단계를 마치면 iOS 13 이전 버전에서 앱을 실행할 수 있습니다.
[편집]
마지막으로 AppDelegate.swift
파일은 다음과 같이 보일 것입니다.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
}
나는 같은 문제가 있었고 var window: UIWindow?
디버그 오류가 말한대로 추가하십시오 .
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
앱 델리게이트 클래스를 확인할 수 있습니다.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}
Swift 5 및 Xcode 11
속성 이 SceneDelegate
포함되어 있는지 확인UIWindow
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
//...
}
Appdelegate 파일에 다음 창 선언을 추가하십시오.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window:UIWindow?
...
앱의 Info.plist 파일에 UIMainStoryboardFile 키가 포함 된 경우이 속성을 구현해야합니다. 이 합성 된 속성의 기본값은 nil이며, 앱이 일반 UIWindow 개체를 만들고 속성에 할당하도록합니다. 앱에 사용자 지정 창을 제공하려면이 속성의 getter 메서드를 구현하고이를 사용하여 사용자 지정 창을 만들고 반환해야합니다.
Info.plist 응용 프로그램 장면 매니페스트의 설정> 다중 창 활성화> false. 이것은 나를 위해 문제를 해결했습니다.