2016-06-23 2 views
3

저는 스위프트에있는 noobie입니다. 다음과 같이 GameViewController 또는 GameScene의 인스턴스를 HelperClass에 전달하고 싶습니다. 자바에서는 Object을 사용할 수 있습니다. 스위프트에서 어떻게 이루어 집니까?Swift에서 Java Object에 해당하는 것은 무엇입니까?

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

기본적으로 GameCenter에서 최고 기록을 얻으면 적절한 발신자에게 알리고 싶습니다.

답변

3

"발신자"를 원하는 유형으로 원한다고 알고 있습니다. 이 경우 "AnyObject"유형을 사용해야합니다. Documentation

0

해당 클래스의 인스턴스를 전달하려는 경우 해당 클래스의 인스턴스를 전달할 수 있습니다. 모든 클래스는 당연히 객체이며 UIViewControllers도 예외는 아닙니다. 당신이 GameViewController 클래스 내에서 메소드를 호출 할 경우

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

이 같은 수행 할 수

getHighscores("str", caller: self) 

당신이 '통지'는 NSNotificationCenter를 사용할 수있는 무언가의 클래스해야하는 경우. 시작하려면 resource이 필요합니다.

1

AnyObject는 Swift의 "could be anything"유형입니다. 당신이 실제로 원하는 것은 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) 
    } 
} 
관련 문제