Swift-错误:在初始化之前使用了变量“self.___”

Posted

技术标签:

【中文标题】Swift-错误:在初始化之前使用了变量“self.___”【英文标题】:Swift- error: Variable 'self.___' used before being initialized 【发布时间】: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'。”为什么是这样?我在外面初始化了这个类,但它仍然向我显示错误。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

所以不是“目标:自我”,而是“目标:____”?非常感谢您的回复! 不。只需将变量声明为可选。 var fooVarSwipe: Any?, fooVarTap: Any?

以上是关于Swift-错误:在初始化之前使用了变量“self.___”的主要内容,如果未能解决你的问题,请参考以下文章

您好,我收到textFieldDidChange(Swift)的两个错误

Swift 无法添加另一个环境视图

json.swift 错误是 Self.init 在委托初始化程序中的所有路径上都没有调用

如何在 swift 初始化程序中确定 Self 类

初始化问题之前使用的另一个变量“__”

在初始化之前使用的变量“theData”,我应该如何修复