Сбой приложения на ios12.0.1 при удалении вида из супер - PullRequest
0 голосов
/ 30 октября 2018

Дата / Время: 2018-10-30 00:57:35 +0000 Версия ОС: iPhone OS 12.0.1 (16A404) Версия отчета: 104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x10
Crashed Thread:  0

Тема 0 Сбой: 0 libobjc.A.dylib
0x00000001aa9f0d70 objc_msgSend + 16 1 Foundation
0x00000001ac3c7958 NSLayoutConstraintIsPotentiallyDanglyInContainer + 112 2 UIKitCore 0x00000001d8b78464 - [UIView + 13431908 (AdditionalLayoutSupport) _snipDangliesWithForce: repairIfPossibleForViewThatMoved: newSuperview: oldSuperview:] + 424 3 UIKitCore 0x00000001d8b781c8 _UIViewRemoveConstraintsMadeDanglyByChangingSuperview + 1088 4 UIKitCore 0x00000001d8c19f54 __45- [UIView + 14094164 (Иерархия) _postMovedFromSuperview:] _ block_invoke + 68 5
UIKitCore 0x00000001d8c19e74 - [UIView + 14093940 (Иерархия) _postMovedFromSuperview:] + 756 6 UIKitCore
0x00000001d8c17f38 __UIViewWasRemovedFromSuperview + 172 7 UIKitCore 0x00000001d8c17a18 - [UIView + 14084632 (иерархия) removeFromSuperview] + 464

Я получил такой сбой, как этот, только ios12.0.1

1 Ответ

0 голосов
/ 13 ноября 2018

Моя репутация недостаточно высока, чтобы комментировать, но у меня произошел тот же сбой, который только начал происходить на iOS 12. Я отправил отчет об ошибке в Apple, так что, надеюсь, он скоро будет решен.

На основе трассировки стека происходит сбой при попытке очистить висячие ограничения, поэтому одним из возможных обходных путей, который вы можете попробовать, является удаление всех ограничений перед удалением представления.

extension UIView {
    func removeAllConstraints() {
        let superViewConstraints = superview?.constraints.filter{ $0.firstItem === self || $0.secondItem === self } ?? []

        superview?.removeConstraints(superViewConstraints + constraints)
    }
}

... а затем, прежде чем вид будет удален, просто позвоните:

view.removeAllConstraints() 

Я не уверен на 100%, что это сработает, потому что я сам не смог воспроизвести аварию, я видел только ее всплывающую подсказку в службе аналитики аварий, которую я использую.

...