【问题标题】:Swift- error: Variable 'self.___' used before being initializedSwift-错误:在初始化之前使用了变量“self.___”
【发布时间】:2017-03-10 23:21:01
【问题描述】:

我正在尝试在 Playground 中使用手势识别器,但遇到了一些问题。

这是我的课:

class foo {

    var fooVarSwipe: Any
    var fooVarTap: Any

    init() {

        let gr = UISwipeGestureRecognizer(target: self, action: #selector(foo.bar))
        let tr = UITapGestureRecognizer(target: self, action: #selector(foo.tar))
        helloApple.addGestureRecognizer(gr)
        helloApple.addGestureRecognizer(tr)
        helloApple.isUserInteractionEnabled = true
        self.fooVarSwipe = gr
        self.fooVarTap = tr

    }



    @objc func tar() {
        print("tapped")
    }

    @objc func bar() {
        print("swiped")
        currentViewNum = 1
    }
}

我遇到的问题是,在以“let gr”开头的行上,它说“在初始化之前使用了变量'self.fooVarSwipe'。”为什么是这样?我在外面初始化了这个类,但它仍然向我显示错误。

任何帮助将不胜感激! 提前欢呼和感谢, 西奥

【问题讨论】:

    标签: ios swift uikit


    【解决方案1】:

    在 let gr 中,你的目标是 self,它是类 foo 的一个实例。 由于您尚未初始化它的两个变量,因此当您尝试访问它们时编译器会抛出错误。 Swift 不接受这种行为。我建议您将它们声明为可选。

    【讨论】:

    • 所以不是“目标:自我”,而是“目标:____”?非常感谢您的回复!
    • 不。只需将变量声明为可选。 var fooVarSwipe: Any?, fooVarTap: Any?
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多