从单例调用方法时为空变量 class

Empty vars when calling method from singleton class

所以我有一个单例 class,我在其中实现了我的模块的委托。但是,当该委托方法在此单例中执行时,我在应用程序的另一个 class 中调用了一个方法,它崩溃了,因为之前在 class 中设置的所有变量都是空的。

class Player: Jukebox, JukeboxDelegate {

    static let sharedInstance = Player()

    func setDelegate(){
        jukebox = Jukebox(delegate: self)
    }

    func play(Link: String) {
        jukebox.setIT([JukeboxItem(URL: NSURL(string: Link)!)])
        jukebox.setImage(currentImage)
        jukebox?.play()
    }

    func audioPlayerDidFinishPlaying(player: Jukebox, successfully flag: Bool) {
        if pltype == PlayerType.Playlist {
            MyMusicVC.continuePlaying() { () -> () in
            }

        }
    }

    func jukeboxStateDidChange(state: Jukebox) {

    }


    func jukeboxPlaybackProgressDidChange(jukebox: Jukebox) {

    }

    func jukeboxDidLoadItem(jukebox: Jukebox, item: JukeboxItem) {

    }

    func jukeboxDidUpdateMetadata(jukebox: Jukebox, forItem: JukeboxItem) {

    }
}

关于为什么会发生这种情况有什么想法吗?

很难理解这是怎么回事。但是您正在 class 唱自动点唱机 class。然后让这个 subclass 成为自动点唱机本身的代表。然后我还注意到您正在设置一个自动点唱机 属性,它似乎是可选的但不是。

例如。为什么在 play() 函数中是自动点唱机。使用了两次但最后一行是自动点唱机?。自动点唱机是可选的吗?还是隐式展开?如果是这样,你为什么要使用它两次解包然后第三次可选。

您是否尝试过不让这个单例成为自动点唱机的子class。相反,只需使其符合 JukeBoxDelegate 协议,看看是否可以实现相同的目标?