2015-02-08 26 views
5

Czy jest jakaś wada w szybkich do korzystania z domyślnej wartości nieruchomości zamiast ustawiania go w inicjalizatorze?Swift: Domyślny nieruchomość vs ustawiania w inicjalizatorze

np

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

vs.

class Bar: UIViewController { 
    var value : UIRefreshControl! 

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

Domyślne wartości nieruchomości wydają się bardziej zwięzły i elegancki, ale nie widzę ich stosować w przykładach kodu, w którym mogą one być stosowane.

Odpowiedz

2

Jedynym minusem jest to, że domyślne wartości właściwości są ustawiane za każdym razem, gdy instancja obiektu jest tworzony, nawet jeżeli nieruchomość jest następnie zastępowane w jednej lub kilku inicjalizatorów. To chyba nie jest problemem, jeśli jesteś po prostu przypisanie domyślnych wartości liczbowych, ale jeśli nie jest to klasa, która jest kosztowna skonstruować może skończyć się robi dwa razy pracę.

+0

Ach, ale w teorii, czy jest to stały z 'let' to nie byłoby problemem są prawidłowe? Choć oczywiście 'let' o wartości domyślnej uczyniłoby klasa mniej rozciągliwy ... –

+1

Rzeczywiście można ponownie przypisać' let' deklarowane właściwości wewnątrz inicjatora. Dziwne ale prawdziwe! –

+1

Ponadto, chcę dodać, że domyślne wartości właściwości są świetne i używam ich wszędzie tam, gdzie to możliwe. Odpowiedź jest jedyną wadą - istnieją pozytywne powody, które czynią je wartościowymi w prawie wszystkich przypadkach. –