Swift:更改结构代码时构建时间变慢

时间:2018-01-26 15:17:44

标签: swift xcode compilation

TL;博士

将代码更改应用于常用的struct会导致构建时间非常慢。这可以避免吗?

我有一个相当大的Swift项目(Xcode 9.2),我使用struct来保存应用程序中使用的所有样式信息(颜色,间距等),如:

struct Style {
  var iconColor: UIColor = .darkGray
  var lightTextColor: UIColor = .gray
  // ... and many more properties ...

  static var defaultStyle: Style { 
    return Style() 
  }

  static var fancyStyle: Style {
    var style = Style()
    // ... override style props for more fancyness ...
    return style
  }
}

每个视图控制器(项目中大约有30个VC,都是在代码中创建的 - 没有使用故事板)有一个Style实例,并在渲染其UI时使用它:

class MyViewController: UIViewController {
  var style = Style.defaultStyle // can be overridden by creator of the VC
  override func viewDidLoad() {
    super.viewDidLoad()
    myLabel.textColor = style.lightTextColor
  }
}

这非常好用,只允许在一个地方更改设置,而不会用全局常量污染命名空间。

但是,我注意到当在struct内更改属性的默认值时,编译时间急剧上升,Xcode基本上执行完全重建。例如。将上述Style.lightTextColor定义更改为var lightTextColor: UIColor = .green会导致构建时间与项目的完全重建相媲美。但是,如果我直接在使用它的位置更改值;例如在视图控制器中:myLabel.textColor = .green,项目构建非常快。

是否有解决方案,最好是通过配置编译器来做...在这种情况下做的工作少了?

0 个答案:

没有答案