Ios 在viewDidLoad中初始化类并将其分配给成员变量

Ios 在viewDidLoad中初始化类并将其分配给成员变量,ios,swift,Ios,Swift,我有一个customview,一个UIView的子类,但当我尝试初始化为类属性时,它会给我带来不想要的行为,我在这里提到过, 但是在viewDidLoad()中工作正常 我需要通过SignViewController 我试过了,但是没有用 class SignViewController: UIViewController, UIScrollViewDelegate { var hermiteScribbleView:HermiteScribbleView? override

我有一个customview,一个
UIView
的子类,但当我尝试初始化为类属性时,它会给我带来不想要的行为,我在这里提到过,

但是在
viewDidLoad()
中工作正常

我需要通过
SignViewController

我试过了,但是没有用

class SignViewController: UIViewController, UIScrollViewDelegate
{
    var hermiteScribbleView:HermiteScribbleView?
    override func viewDidLoad()
    {
        super.viewDidLoad()
        let hermiteScribbleView1 = HermiteScribbleView()
        hermiteScribbleView = hermiteScribbleView1
    }
}
这里是我使用房产的许多地方之一

func landscapeOps(){
    hermiteScribbleView?.triggerLandscape()
    if(hermiteScribbleView?.currentStage == 0 ) {
        hermiteScribbleView?.backgroundLayer2.isHidden = true
        hermiteScribbleView?.backgroundLayer1.isHidden = false
    }else if (hermiteScribbleView?.currentStage == 1) {
        hermiteScribbleView?.LineLayer.isHidden = true
        hermiteScribbleView?.backgroundLayer1.isHidden = true
        hermiteScribbleView?.backgroundLayer2.isHidden = false
    }
}

为什么将其初始化为类属性如此重要?我已经编辑了一个问题,其中显示了我使用该属性的一次,是否有其他方法?我建议使用惰性初始值设定项。正如我所记得的,swift有内置的lazy-vars特性。另外,您也可以编写一个经典的惰性函数初始值设定项。您应该创建一个协议/委托,您的高级类不应该编辑该视图,只要告诉它更改或调用为该视图准备的方法,在hermiteScribbleViewlazy中,这似乎是正确的方法,它只会在第一次在代码中调用该属性时初始化该属性
func landscapeOps(){
    hermiteScribbleView?.triggerLandscape()
    if(hermiteScribbleView?.currentStage == 0 ) {
        hermiteScribbleView?.backgroundLayer2.isHidden = true
        hermiteScribbleView?.backgroundLayer1.isHidden = false
    }else if (hermiteScribbleView?.currentStage == 1) {
        hermiteScribbleView?.LineLayer.isHidden = true
        hermiteScribbleView?.backgroundLayer1.isHidden = true
        hermiteScribbleView?.backgroundLayer2.isHidden = false
    }
}