2016-05-27 22 views
0

In diesem Fall ist die statische Variable textView in Holder struct enthalten.
Aber ich stieß auf ein Problem, das ich "Holder.textView.fieldEditor = true" jedes Mal festlegen muss, wenn Benutzer diese Funktion aufrufen.
Wie lasse ich diese Aktion nur einmal ausführen?So legen Sie die Eigenschaft in der statischen Variablen in der Funktion fest

func myTextView() -> NSTextView { 

    struct Holder { 
     static var textView = NSTextView() 
    } 

    Holder.textView.fieldEditor = true 
    return Holder.textView 
} 

Antwort

0

Diese

struct Holder { 
    static var textView = NSTextView() 
} 

sollten nicht in den Anwendungsbereich Ihrer Funktion definiert werden. Andernfalls wird jedes Mal, wenn Sie myTextView() aufrufen, eine neue Holder Struktur definiert und instanziiert.

Dies macht die static var nutzlos für Ihren Zweck.

Auf der anderen Seite, wenn Sie Holder außerhalb der Funktion definieren, bleibt der Wert bei mehreren Aufrufen erhalten.

Blick

enter image description here