Ваш вопрос не показывает код, на который вы ссылаетесь, но я могу сказать вам, что ошибка EXC_BAD_ACCESS обычно означает, что вы пытаетесь получить доступ к объекту, который был освобожден из памяти.
Не входя вглубина около сильных против слабых переменных, у вас, вероятно, есть переменная weak
или unowned
(к этому ограничению), которая становится nil
и к которой вы пытаетесь получить доступ (путем принудительного развертывания).
Когда вы удаляете эти узлы или когда представление исчезает, ограничение освобождается из памяти.Таким образом, исправление здесь заключается в том, чтобы либо сделать ссылку на это ограничение strong
, либо создать новое ограничение, сохранить строгую ссылку на него в классе и присвоить это ограничение объекту.
Предполагая, что вы ссылаетесьзаменить на раскадровку, замените:
@IBOutlet weak var constraint: NSLayoutConstraint!
на:
@IBOutlet var constraint: NSLayoutConstraint!
Также обратите внимание, что переменная может быть развернута принудительно (NSLayoutConstraint!
). Вероятно, поэтому вы сталкиваетесь с ошибкой EXC_BAD_ACCESS.Установите ограничение как сильную переменную вместо слабой, или, что еще лучше, по возможности избегайте опций принудительного развертывания!
Примечание. Если это не решит вашу проблему, оставьте комментарий после добавления других.детали к вашему вопросу.