ios - swift 。在初始化所有存储的属性之前在方法调用中使用 'self'

标签 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
    }
  }
}

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

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

最佳答案

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

  1. 将属性更改为可选值或隐式展开的可选值 (不推荐)
  2. buildCircle() 方法设为静态或只是一个 文件中的函数并为所有圆调用 addSubview() 在初始化所有属性并调用之后 super.init()
  3. 等你只需要避免在 类已初始化。

关于ios - swift 。在初始化所有存储的属性之前在方法调用中使用 'self',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39039442/

相关文章:

ios - Textfield tap 正在关闭 SwiftUI 中的导航链接

ios - Swift中 "withEvent"的含义,以及一般的参数修饰符

ios - 如何在swift中使用一个类的属性到另一个类

ios - 仅以纵向启动应用程序

ios - 向下移动表格 View 以显示隐藏的文本字段

iphone - CoreData 在返回数组时需要字符串,在返回字符串时需要 NSData

ios - 分割 View 中主视图的后退导航不适用于显示模式 "Auto"或 "primaryHidden"

swift - SQLITE 和 Swift 3 挑战

ios - 如何在swift中从base64字符串创建GIF

ios - 用于循环多次初始化的Objective C++失败