最近我一直在寻找在 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 )
最佳答案
一般来说,第二种方法的好处是每个调用者都会收到一个专为他们准备的新实例。他们每个人都可以改变自己的副本而不影响其他副本。
使用第一种技术,一个调用者可以获得对共享 UIColor
对象的引用,并修改它,以便它影响全局的所有其他调用者。但是,由于 UIColor
不是可变的,所以这不是问题。
对于像 UI 颜色这样的不可变对象(immutable对象),最好选择第一个选项,因为它会节省内存(所有调用者都获得对单个共享对象的引用,而不是副本)。
关于Swift UIColor 扩展最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40996639/