2016-09-27 13 views
0

から構文の変化は、私が以前にそうのような共有インスタンスを作成します。スウィフト3.0静的インスタンス、クラスで移行ツール

class MenuConfigurator 
{ 
    // MARK: Object lifecycle 

    class var sharedInstance: MenuConfigurator 
    { 
    struct Static { 
     static var instance: MenuConfigurator? 
     static var token: dispatch_once_t = 0 
    } 

    dispatch_once(&Static.token) { 
     Static.instance = MenuConfigurator() 
    } 

    return Static.instance! 
    } 

} 

スウィフト3.0移行ツールがにコードのブロックを変更したようです

class MenuConfigurator 
{ 
    private static var __once:() = { 
     Static.instance = MenuConfigurator() 
    }() 
    // MARK: Object lifecycle 

    class var sharedInstance: MenuConfigurator 
    { 
    struct Static { 
     static var instance: MenuConfigurator? 
     static var token: Int = 0 
    } 

    _ = MenuConfigurator.__once 

    return Static.instance! 
    } 

} 

エラーUse of unresolved identifier Staticが発生します。ここで何が起きてるの?新しいバージョンprivate static var __onceが作成されたのはなぜですか?

+0

こんにちは、プロジェクトをすばやく3に変換するのは本当に悪夢です。以前のコードを入力してエラーがどのようなものかを確認しようとしましたか?これから変換ツールがこのように変わった理由を知ることができます。 swift 3でも使える 'static'もあります。私はそれを使用しています。小さな 's'だけで –

答えて

1

dispatch_once_tはシングルトンを作成するために、スウィフト3

に(少なくともスイフト2以降)推奨方法をドロップされた単純

ある
class MenuConfigurator 
{ 
    static let sharedInstance = MenuConfigurator() 
} 

let configurator = MenuConfigurator.sharedInstance 

マイグレータの提案を忘れ。

関連する問題