迅速.在初始化所有存储的属性之前,在方法调用中使用'self'

Mat*_*der 8 ios swift

我上课了

class ChartView: UIView
{
  class: DotView {
    let circleView1: UIView
    let circleView2: UIView

    init (view: UIView)
    {
      self.view = view
      self.circleView1 = self.buildCircle(some rect here)
      self.circleView2 = self.buildCircle(some rect here)

    func buildCircle(rect: CGRect) -> UIView
    {
       let dotView = UIView(frame: rect)
       dotView.backgroundColor = UIColor.whiteColor()
       dotView.layer.cornerRadius = dotView.bounds.width / 2
       self.view.addSubview(dotView)
       return dotView
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:在初始化所有存储属性之前,在方法调用'buildCircle'中使用'self'

所以我只想在某个方法中创建对象,然后将其分配给存储的属性.我该如何修复我的代码?

Tob*_*bol 14

在初始化所有非可选实例变量之前,您无法在self上调用方法.有几种方法可以解决这个问题.

  1. 将属性更改为选项或隐式展开的选项(不推荐)
  2. 使buildCircle()方法成为静态或只是文件中的一个函数,并addSubview()在初始化所有属性并调用之后调用所有圆圈 super.init()
  3. 等等.你必须在初始化类之前避免调用self.