2016-12-06 1 views
2

J'ai récemment cherché à définir des couleurs personnalisées dans une extension UIColor, mais j'ai vu différentes façons de le faire. Existe-t-il une meilleure pratique à ce sujet documentée?Swift UIColor Extensions bonne pratique

Par exemple, j'ai vu ces deux moyens utilisés:

extension UIColor { 
    static let myColor = UIColor(colorLiteralRed: 1, green: 1, blue: 1, alpha: 1) 
} 

//called like UIColor.myColor 

ou

extension UIColor { 
    static var myColor: UIColor { 

    return UIColor(red:1, green:1, blue:1, alpha:1.0) 
} 
} 
    //called like UIColor.myColor 

est-il une meilleure pratique basée non opinion ici? Ou est-ce juste à la préférence personnelle? (Je suis conscient que la couleur de l'exemple n'est pas réellement personnalisée: D)

Répondre

4

En général, l'avantage de la seconde approche est que chaque appelant reçoit une nouvelle instance juste pour lui. Ils peuvent chacun muter leur copie et ne pas affecter les autres. Avec la première technique, un appelant peut obtenir une référence à l'objet UIColor partagé, et le modifier pour qu'il affecte globalement tous les autres appelants. Cependant, étant donné que UIColor n'est pas modifiable, ceci n'est pas un problème. Dans le cas d'un objet immuable comme la couleur de l'interface utilisateur, il est préférable d'utiliser la première option, car elle économisera de la mémoire (tous les appelants reçoivent une référence à un seul objet partagé, plutôt qu'à des copies).