什么是Swift中的Java Object?

时间:2016-06-23 04:17:22

标签: java swift casting sprite-kit

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

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

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

3 个答案:

答案 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 ,可以帮助您入门。