2016-12-06 60 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颜色这样的不可变对象的情况下,最好使用第一个选项,因为它可以节省内存(所有调用者都可以获得对单个共享对象的引用,而不是副本)。