방금 앱을 개발했지만 시뮬레이터에서 실행하면 디버거 콘솔에 다음과 같이 표시됩니다.
앱 델리게이트는 메인 스토리 보드 파일을 사용하려는 경우 window 속성을 구현해야합니다.
앱 위임 파일이 있습니다. 메시지는 무엇을 의미하며 내 앱이 작동하도록하려면 어떻게해야합니까?
답변
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;
여기에서 앱의 수명주기에 대해 자세히 알아볼 수 있습니다 .
답변
누군가이 문제를 다시 발견하고 Objective-C로 프로그래밍하는 경우 AppDelegate.h
파일에 다음 코드 줄이 있는지 확인하십시오 .
@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?
//...
}