2016-04-24 29 views
0

Ich bin ein library in Swift bauen und es hat eine globale Variable (globale Variablen werden automatisch faul initialisiert). Die Initialisierung dieser Variablen dauert ungefähr eine Sekunde. Mein Problem ist, ich möchte die Variable initialisieren, wenn die App geladen wird, so dass der Benutzer nicht später warten muss. Mein aktueller Ansatz ist dies:Machen Sie eine globale Variable nicht faul

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 
    } 

    .... 

} 

Aber dieser Ansatz Naht nicht, wie es die swiftlike Art und Weise ist, es zu tun. Wie kann ich die Variable richtig initialisieren?

Thx

Antwort

1

Es gibt keinen schnellen Weg „wenn“ Sie sollten globale Variablen im Rahmen init, Es hängt von der Strömung des Rahmens wird nichts in Ihrem Rahmen, bis es verwendet wird, genannt wird, gibt es keine "FrameworkDidLaunch" -Methode, es ist ein "statischer" Code wie jede andere Klasse, aber in einem anderen Modul kann es sogar nur ein Bündel von Ressourcen sein ...

Wenn Sie sicherstellen möchten, dass jemand Ihr Framework so verwendet Sie wollten es dann in die Dokumentation schreiben und/oder eine statische Methode hinzufügen, die vor der Verwendung wie "MyFramwork.startMyFramework()" aufgerufen werden muss oder wenn Sie Informationen vom Benutzer benötigen wie zB den API Key "MyFramwork.setApiKey (_ :) " und du se, um globale Variablen zu initialisieren und zu bestätigen, ob diese Methode aufgerufen wurde.