2015-02-08 13 views
5

C'è qualche svantaggio in rapida all'utilizzo di un valore di proprietà di default invece di impostare nel inizializzatore?Swift: proprietà Default vs impostazione di inizializzazione

esempio,

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

vs.

class Bar: UIViewController { 
    var value : UIRefreshControl! 

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

i valori delle proprietà di default sembrano più concisa ed elegante, ma io non li vediamo utilizzati in esempi di codice in cui potrebbero essere utilizzati.

risposta

2

L'unico inconveniente è che i valori di proprietà predefiniti sono impostati ogni volta che viene creata un'istanza dell'oggetto, anche se una proprietà viene successivamente sovrascritto in uno o più initializers. Questo probabilmente non è un problema se assegni solo valori numerici predefiniti, ma se c'è una classe che è costosa da costruire potresti finire col fare il doppio del lavoro.

+0

Ah, ma in teoria se si tratta di una costante con 'let' allora questo non sarebbe un problema corretta? Anche se naturalmente 'let' con un valore predefinito renderebbe la classe meno estensibili ... –

+1

Si può effettivamente riassegnare' proprietà all'interno di un inizializzatore let'-dichiarato. Strano ma vero! –

+1

Inoltre, voglio solo aggiungere che penso che i valori delle proprietà di default siano grandi e li utilizzo ovunque possibile. La risposta è l'unico inconveniente: ci sono motivi positivi che li rendono utili in quasi tutti i casi. –

Problemi correlati