2015-02-08 21 views
5

Gibt es einen Nachteil in der Verwendung eines Standardeigenschaftswerts, anstatt es im Initialisierer zu setzen?Swift: Standardeigenschaft vs Einstellung im Initialisierer

z.B.

class Foo: UIViewController { 
    let value = UIRefreshControl() 
} 

gegen

class Bar: UIViewController { 
    var value : UIRefreshControl! 

    // or using init() 
    override func viewDidLoad() { 
     self.value = UIRefreshControl() 
    } 
} 

Standardeigenschaftswerte scheinen terse und elegant, aber ich sehe sie verwendet werden, in Codebeispielen, wo sie konnten nicht verwendet.

Antwort

2

Der einzige Nachteil besteht darin, dass Standardeigenschaftswerte jedes Mal festgelegt werden, wenn eine Instanz des Objekts erstellt wird, auch wenn eine Eigenschaft anschließend in einem oder mehreren Initialisierern überschrieben wird. Dies ist wahrscheinlich kein Problem, wenn Sie nur numerische Standardwerte zuweisen, aber wenn es eine Klasse gibt, die teuer zu konstruieren ist, könnten Sie am Ende die doppelte Arbeit erledigen.

+0

Ah, aber in der Theorie, wenn es eine Konstante mit "Let" ist, dann wäre dies keine Sorge richtig? Natürlich würde "Let" mit einem Standardwert die Klasse weniger erweiterbar machen ... –

+1

Sie können tatsächlich 'let'-deklarierte Eigenschaften innerhalb eines Initialisierers neu zuweisen. Komisch aber wahr! –

+1

Außerdem möchte ich nur hinzufügen, dass ich denke, Standard-Eigenschaftenwerte sind groß und ich verwende sie wo immer möglich. Die Antwort ist der einzige Nachteil - es gibt positive Gründe, die sie in fast allen Fällen lohnend machen. –

Verwandte Themen