Swift UIColor 扩展最佳实践

标签 swift uicolor

最近我一直在寻找在 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/

相关文章:

swift - 将数据从容器 VC 传递到 XLPagerTabStrip 中的子 VC

ios - 如何更改注释标注窗口 Swift 的高度

ios - 比较 UIColors 或 CGColor 或 CGColorSpace

ios - 如何获取返回 rgb、hex 值的图像像素? ios

ios - 如何计算两个 UIColor 实例之间的颜色对比度

iOS:如何在运行时将应用程序背景分配给 UIView

ios - 将 UIColors 保存和检索到核心数据的最佳方法

ios - Swift 2.3,如何向Instabug报错?

ios - 使一个单元格(但不是第一个单元格)在 UITableView 上始终可见

ios - Swift:通过 NSNotificationCenter 的键盘观察器不起作用