如何清除此EXC_BAD访问错误?

时间:2016-07-16 18:13:27

标签: swift uiview tags

我的代码:

override func viewDidLoad()
{
    super.viewDidLoad()
    imagePicker.delegate = self
    myScrollView.delegate = self
    myScrollView.subviews.forEach({ $0.removeFromSuperview() })

    for i in 1...2
    {
        myView = UIView(frame:CGRectMake(myView.frame.origin.x,22.0,320,83))
        myView.tag = i
        myScrollView.addSubview(myView)
        myScrollView.contentSize = CGSizeMake(myScrollView.frame.size.width*2,128.0)
    }
}

错误:

  

致命错误:在展开Optional值时意外发现nil   (lldb)

1 个答案:

答案 0 :(得分:1)

  1. 这一行可能不正确:

    date_time

    您在实例化它的同一行中使用 myView = UIView(frame:CGRectMake(myView.frame.origin.x,22.0,320,83)) 。如果您在调用此行之前检查myView,则可能是myView

  2. 最有可能nilmyScrollView是隐式包装的可选imagePicker @IBOutlet。在使用它们之前检查这些值(通过插入nil语句,或者通过添加断点然后检查调试器中的值)。看看其中任何一个是print

    就可能nil的原因而言,最常见的两个问题是:

    • 如果您忽略了在Interface Builder中挂钩nil,则插座可以是nil。这可以通过检查IB中滚动视图的出口来确认。也可以通过查看插座旁边左边距中的插座连接器来快速确认

      连接:

      enter image description here

      未连接:

      enter image description here

    • 如果以编程方式转换到此场景,您也可以使用@IBOutlet出口,但这样做不正确(即从类中而不是从故事板中实例化此场景)。