我是斯威夫特的noobie。我想将GameViewController或GameScene的实例传递给HelperClass,如下所示。在java中,我可以使用Object
。这是如何在Swift中完成的?
func getHighscores(leaderboardID: String, caller: **whatTypeHere**) {
...
}
所以基本上我想在从GameCenter获得高分时通知正确的来电者。
答案 0 :(得分:4)
据我所知,你想要"来电"是你想要的任何类型。 在这种情况下,您需要使用" AnyObject"在此输入。 Documentation
答案 1 :(得分:1)
AnyObject是&#34的类型;可以是任何"在斯威夫特。你可能真正想要的是定义一个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)
}
}
答案 2 :(得分:0)
如果要传递该类的实例,可以这样做。当然,所有类都是对象,UIViewControllers
也不例外。
func getHighscores(leaderboardID: String, caller: GameViewController) {
// call some method in caller like 'caller.refreshHighScore()'
}
如果你想从GameViewController类中调用该方法,你可以这样做:
getHighscores("str", caller: self)
如果您需要“通知”某类内容,可以使用NSNotificationCenter。这是一个 resource ,可以帮助您入门。