如何删除此 EXC_BAD 访问错误?
Posted
技术标签:
【中文标题】如何删除此 EXC_BAD 访问错误?【英文标题】:How to remove this EXC_BAD Access error? 【发布时间】:2016-07-16 18:13:27 【问题描述】:我的代码:
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)
错误:
致命错误:在展开可选值时意外发现 nil (lldb)
【问题讨论】:
【参考方案1】:这行可能不正确:
myView = UIView(frame:CGRectMake(myView.frame.origin.x,22.0,320,83))
您在实例化它的同一行中使用myView
。如果您在调用此行之前检查myView
,则很可能是nil
。
myScrollView
或 imagePicker
很可能是隐式包装的可选 @IBOutlet
,即 nil
。在使用这些值之前检查它们(通过插入print
语句,或者通过添加断点然后在调试器中检查这些值)。看看这两个是不是nil
。
就为什么可能是nil
而言,两个最常见的问题是:
如果您忽略了在 Interface Builder 中挂钩 @IBOutlet
,则插座可以是 nil
。这可以通过检查 IB 中滚动视图的出口来确认。也可以通过查看插座旁边左边距的插座接头是否快速确认
已连接:
未连接:
或
如果以编程方式过渡到此场景,但这样做不正确(即从类而不是从情节提要中实例化此场景),您也可以将出口设为 nil
。
【讨论】:
我已检查插座已连接 没有连接插座,我在这条线上遇到错误--- myView.tag = i 好的,所以你是说出口连接到 IB,但在viewDidLoad
出口似乎是nil
?如果是这种情况,问题可能是您如何实例化视图控制器(我的第二点)。你是如何实例化视图控制器的?
这是我的代码----->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) //
我在设置视图标签时收到 EXC_BAD_INSTRUCTION。请检查我是否正确设置了标签以上是关于如何删除此 EXC_BAD 访问错误?的主要内容,如果未能解决你的问题,请参考以下文章
错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误
如何删除此错误“ModuleNotFoundError: No module named 'sklearn.cross_validation'”