gpt4 book ai didi

Swift 1.2 Singleton 导致 App 无法启动

转载 作者:行者123 更新时间:2023-11-28 07:05:03 25 4
gpt4 key购买 nike

我为我的 iOS 应用程序创建了一个单例来全局访问某些东西。然而,当我在模拟器或我的 iPhone/iPad 上启动应用程序时,它会停留在启动屏幕上,并且永远不会到达 appdelegates didFinishLaunchingWithOptions 方法(我试图在其中打印)。如果我删除单例并将方法和变量保留为全局变量,它就可以完美运行。这让我相信这是导致这次崩溃的单例。这是我使用的代码。如果我注释掉当前注释掉的行,它在我的代码中的任何地方都像这个“gameName”一样完美地工作,但我知道这不是很好的做法,所以如果我取消注释它们并像这样访问单例“Global.sharedInstance.gameName”是什么时候该应用程序无法启动。我确实在整个应用程序中多次调用这个单例,所以我不确定这是否是问题所在。

//class Global {
//
// static let sharedInstance = Global()
//
// private init() {
// println("Global Singleton created");
// }

private var optionsModel = OptionsModel()
private var gamesModel = GamesModel()
private var savesModel = SavesModel()

var device = (UIApplication.sharedApplication().delegate as! AppDelegate).device
var screenWidth = (UIApplication.sharedApplication().delegate as! AppDelegate).window!.bounds.width
var screenHeight = (UIApplication.sharedApplication().delegate as! AppDelegate).window!.bounds.height
var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var PI = CGFloat(M_PI)
var gameIndex = 0
var player: AudioPlayer!
var gameLevel = ""

func loadSong(name: String, loops: Int) {
player = AudioPlayer(name: name, loopCount: loops)
}

func playAduio(fileName: String) {
loadSong("\(fileName)Audio", 0)
player!.play()
}

var gameName: String {
get {
return gamesModel.getName(gameIndex)
}
}

var gameDescription: String {
get {
return gamesModel.getDescription(gameIndex)
}
}

var gameIntervals: NSTimeInterval {
get {
return gamesModel.getIntervals(gameIndex)
}
}

var gameNeedsMic: Bool {
get {
return gamesModel.getMic(gameIndex)
}
}

var gameNeedsSpeech: Bool {
get {
return gamesModel.getSpeech(gameIndex)
}
}

var appLocked: Bool {
get {
return optionsModel.appLocked
}
set {
optionsModel.appLocked = newValue
}
}

var supervisorLoggedIn: Bool {
get {
return optionsModel.supervisorLoggedIn
}
set {
optionsModel.supervisorLoggedIn = newValue
}
}

var themeSongMuted: Bool {
get {
return optionsModel.themeSongMuted
}
set {
optionsModel.themeSongMuted = newValue
}
}

var gameCount: Int {
get {
return optionsModel.gameCount
}
set {
optionsModel.gameCount = newValue
}
}

var gameHighscore: Int {
get {
return savesModel.getHighscore(gameIndex)
}
set {
savesModel.setHighscore(newValue)
}
}

var gameStarCount: Int {
get {
return savesModel.getStarCount(gameIndex)
}
set {
savesModel.setStarCount(newValue)
}
}
//}

最佳答案

傻我。我修好了。

问题是(这对你们中的一些人来说可能是显而易见的,但单例对我来说是新手)单例在应用程序委托(delegate)加载之前加载并且单例中的一些变量试图在它之前从应用程序委托(delegate)中获取信息创建所以它导致了这次崩溃。对其进行了更改,以便在加载应用程序委托(delegate)之后我才加载信息并且它现在可以工作。

关于Swift 1.2 Singleton 导致 App 无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30877273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com