繁体   English   中英

什么是Swift中的Java Object?

[英]What is the equivalent of Java Object in Swift?

我是斯威夫特的noobie。 我想将GameViewController或GameScene的实例传递给HelperClass,如下所示。 在java中,我可以使用Object 这是如何在Swift中完成的?

func getHighscores(leaderboardID: String, caller: **whatTypeHere**) {
...
}

所以基本上我想在从GameCenter获得高分时通知正确的来电者。

据我所知,你希望“来电者”成为你想要的任何类型。 在这种情况下,您需要在此处使用“AnyObject”类型。 文档

AnyObject是Swift中“可能是任何东西”的类型。 您可能真正想要的是定义GameViewController和GameScene实现的协议:

protocol HighScoreReceiver {
    func gotNewScores(scores:[Int])
}

class GameViewController: UIViewController, HighScoreReceiver {
    func gotNewScores(scores: [Int]) {
        // do something here
    }
}

class GameScene: HighScoreReceiver {
    func gotNewScores(scores: [Int]) {
        // do something here
    }
}

class Helper {
    func getHighscores(leaderboardID: String, caller: HighScoreReceiver) {
        //get the scores, then...
        caller.gotNewScores(scores)
    }
}

如果要传递该类的实例,可以这样做。 当然,所有类都是对象, UIViewControllers也不例外。

func getHighscores(leaderboardID: String, caller: GameViewController) {
    // call some method in caller like 'caller.refreshHighScore()' 
}

如果你想从GameViewController类中调用该方法,你可以这样做:

getHighscores("str", caller: self)

如果您需要“通知”某类内容,可以使用NSNotificationCenter。 这是一个可以帮助您入门的资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM