2016-04-24 17 views
0

私はSwiftにlibraryを構築しています。グローバル変数を持っています(グローバル変数は自動的に怠惰に初期化されます)。この変数の初期化には約1秒かかります。私の問題は、私は、ユーザーが後で待つ必要がないように、アプリケーションがロードされているときに変数を初期化したいです。私の現在のアプローチは次のとおりです。グローバル変数を怠惰にしないでください

My ViewController: 

override func viewDidLoad() { 

    ... 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), { 
     let _ = Foo() 
    }) 
} 

My Framework File: 

let myGlobalVariable = bar() 

class Foo { 
    public init() { 
     myGlobalVariable 
    } 

    .... 

} 

しかし、このアプローチは、それを行うのが素早い方法のように継ぎ目がありません。変数を正しい方法で初期化するにはどうすればよいですか?

Thxを

答えて

1

あなたの枠組みの中でグローバルVARSを初期化する必要があり、「とき」、それはあなたのフレームワークの流れに依存し、それが使用されるまで、あなたの枠組みの中で何が呼び出されませんために何の迅速な方法はありませんが、そこにあります"FrameworkDidLaunch"メソッドはありません。他のクラスと同じように "静的"コードですが、他のモジュールと同じように、リソースの束にすぎません...

誰かがあなたのフレームワークを確実に使用したい場合あなたは "MyFramwork.startMyFramework()"のような使用前に呼び出される静的メソッドを追加するか、またはAPIキー "MyFramwork.setApiKey(_ :)のようなユーザーからの情報が必要な場合は静的メソッドを追加することを意図しています。 "とuグローバルバールを初期化し、このメソッドが呼び出された場合はアサートします。

関連する問題