2016-12-06 14 views
2

最近、私はUIColor拡張でいくつかのカスタムカラーを定義することを検討してきましたが、これを行う方法はさまざまでした。これについてのベストプラクティスはどこに文書化されていますか?例えばSwift UIColor拡張のベストプラクティス

私が使用されるこれらの方法の両方を見てきました:

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

//called like UIColor.myColor 

または

extension UIColor { 
    static var myColor: UIColor { 

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

は、ここでは非意見に基づくベストプラクティスはありますか?それとも、個人の好みにちょうどいいですか? (この例の色は実際にはカスタムではないことに気づいています:D)

答えて

4

一般に、2番目のアプローチの利点は、すべての呼び出し元がすべての呼び出し元がそれらのためだけに新しいインスタンスを受け取ることです。彼らはそれぞれコピーを突然変異させ、他のものには影響を与えません。

最初の手法では、1人の発信者が共有されたUIColorオブジェクトへの参照を取得し、それを変更して、他のすべての発信者にグローバルに影響を与えることができます。ただし、UIColorは変更可能ではないため、これは問題ではありません。

UIカラーのような不変オブジェクトの場合は、メモリを節約するため、すべての呼び出し元がコピーではなく単一の共有オブジェクトへの参照を取得するため、最初のオプションを使用する方がよいでしょう。

関連する問題