在nift中的EXC_BAD_ACCESS检查Swift中的可选项

时间:2015-12-15 13:23:33

标签: ios swift uiimageview exc-bad-access

编辑2:在更改一些完全不相关的代码后,崩溃再次发生。即使我尝试恢复代码更改,它也会再次崩溃。

编辑:更新到iOS 9.2(从9.1开始)后,它可以再没有任何问题。

以下代码在nil检查中给了我一个EXC_BAD_ACCESS:

if(self.imageViews != nil){
    for (_,element) in self.imageViews!.enumerate(){
        element.removeFromSuperview()
    }
}

该属性定义如下:

class ImageAdditionalContent : AdditionalContentView {
    var imageViews : [UIImageView]?

即使我尝试首先为它分配一个空数组,它也会在赋值时给出一个EXC_BAD_ACCESS:

self.imageViews = []

更有趣的是,它在一天前完美运作。如果我删除整个代码,运行应用程序,退出它,再次添加代码并再次运行它,它首次在for循环中崩溃,之后再次在nil检查时崩溃。

1 个答案:

答案 0 :(得分:1)

我会在这里利用选项。至于你的EXC_BAD_ACCESS,我不仅要检查UIImageView数组的状态,还要查看self。在作业之前设置一个断点,看看发生了什么。如果这一天工作正常,我还会看看你的项目中发生了哪些代码更改。

    if let elements = self.imageViews {
        for element in elements {
            element.removeFromSuperview()
        }
    } else {
        print("self.imageViews is nil! \(self.imageViews)") 
    }