2015-12-15 2 views
1

РЕДАКТИРОВАТЬ 2: После изменения некоторого полностью несвязанного кода сбой происходит снова. Даже если я попытаюсь вернуть изменения кода, он снова сработает.EXC_BAD_ACCESS on nil проверка необязательна в Swift

EDIT: после обновления до iOS 9.2 (из 9.1) он снова работает без проблем.

Следующий код дает мне 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 = [] 

Даже m Интересно, что он отлично работал день назад. Если я удалю весь код, запустите приложение, закройте его, снова добавьте код и запустите его снова, он сбой в цикле for в первый раз, а затем снова на проверке nil.

ответ

1

Я бы воспользовался опционами здесь. Что касается вашего EXC_BAD_ACCESS, я бы проверял не только состояние массива UIImageView, но и я. Установите контрольную точку перед назначением и посмотрите, что происходит. Если бы это работало нормально день назад, я бы также посмотрел, какие изменения кода произошли в вашем проекте.

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

См. Мои изменения в отношении того, как я снова работал. – gallileo

+0

@ DJ_Lectr0 Он по-прежнему падает на element.removeFromSuperview()? –

+0

Нет на ноль. – gallileo