2016-12-06 64 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

一般而言,第二種方法的好處是每個調用者都會爲他們接收一個新實例。他們每個人都可以改變他們的副本,而不會影響其他副本。

使用第一種技術,一個呼叫者可以獲得對共享UIColor對象的引用,並對其進行修改,以便在全局範圍內影響所有其他呼叫者。但是,由於UIColor不可變,所以這不是一個問題。

在像UI顏色這樣的不可變對象的情況下,最好使用第一個選項,因爲它可以節省內存(所有調用者都可以獲得對單個共享對象的引用,而不是副本)。