Я создал синглтон для моего приложения iOS для доступа к определенным вещам во всем мире. Когда я запускаю приложение int в симуляторе или на моем iPhone/iPad, он остается на экране запуска и никогда не достигает метода appdelegates didFinishLaunchingWithOptions (я пытался его напечатать). Если я удалю синглтон и просто оставлю методы и переменные глобальными, он отлично работает. Что оставляет меня поверить, что это синглтон, вызвавший этот крах. Вот код, который я использую. Если я прокомментирую строки, которые в настоящее время прокомментированы, он отлично работает в этом «gameName» в любом месте моего кода, но я знаю, что это не очень хорошая практика, поэтому, если я раскомментирую их и получаю доступ к синглону, подобному этому, «Global.sharedInstance.gameName» - это когда приложение не запускается. Я вызываю этот синглтон много раз во всем приложении, поэтому я не уверен, что это проблема.Swift 1.2 Singleton заставляет приложение не запускать
//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)
}
}
//}
Вы показываете объявление класса своего глобального класса, которое закомментировано. Наверняка это ошибка редактирования, и 'class Global {' не должен быть прокомментирован? –
Спасибо, но я уже исправил проблему. Однако это не было ошибкой. Создание функций и переменных вне класса делает их глобальными для всего проекта. Это был единственный способ, которым я мог заставить его работать, прежде чем я понял, в чем проблема. –