Отключите сообщения об ошибках автоограничения макета в выводе консоли отладки в XCode

Есть ли способ (временно) отключить ошибку/предупреждающие сообщения авторасположения:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x170098420 H:[UIView:0x15c62c100(2)]>",
    "<NSLayoutConstraint:0x170098600 UIView:0x15c6294f0.leading == UIView:0x15c628d40.leadingMargin - 8>",
    "<NSLayoutConstraint:0x170098650 H:[UIView:0x15c6294f0]-(0)-[UIView:0x15c62b750]>",
    "<NSLayoutConstraint:0x1700986a0 UIView:0x15c62b750.width == UIView:0x15c6294f0.width>",
    "<NSLayoutConstraint:0x1700986f0 UIView:0x15c628d40.trailingMargin == UIView:0x15c62b750.trailing - 8>",
    "<NSLayoutConstraint:0x170098880 H:[UIView:0x15c6294f0]-(0)-[UIView:0x15c62c100]>",
    "<NSLayoutConstraint:0x1700988d0 UIView:0x15c628d40.centerX == UIView:0x15c62c100.centerX + 1>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x170098420 H:[UIView:0x15c62c100(2)]>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
62
задан 6 July 2015 в 10:38

4 ответа

Сделал некоторую декомпиляцию и существует на самом деле путь:

для Objective C Swift 3

 UserDefaults.standard.setValue(false, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")

[[NSUserDefaults standardUserDefaults] setValue:@(NO) forKey:@"_UIConstraintBasedLayoutLogUnsatisfiable"];

Теперь Вы будете только уведомлены, что "_UIConstraintBasedLayoutLogUnsatisfiable ПРОЧЬ".

Обязательное напоминание для любого читающего это: это должно быть последним средством, для подсказок относительно отладки и устранения ограничительных проблем см. "Тайны WWDC Автоматической компоновки" сессии: часть 2 .

части 1 и
164
ответ дан 31 October 2019 в 13:13

решение Swift 3.0:

//Hide Autolayout Warning
UserDefaults.standard.setValue(false, forKey:"_UIConstraintBasedLayoutLogUnsatisfiable")
14
ответ дан 31 October 2019 в 13:13

для любого, кто задается вопросом, как сделать этот macOS / osx с AppKit/Cocoa

UserDefaults.standard.set(false, forKey: "NSConstraintBasedLayoutLogUnsatisfiable")
UserDefaults.standard.set(false, forKey: "__NSConstraintBasedLayoutLogUnsatisfiable")
5
ответ дан 31 October 2019 в 13:13

Я попытался решить это использование lldb, и я нашел решение:

  1. Создают Символьную Точку останова для Символа UIViewAlertForUnsatisfiableConstraints в Модуле UIKit.
  2. Как действие точки останова добавляют, что возврат потока "команды отладчика"
  3. Добавляет вторую команду отладчика: "c"
  4. Отключает, "Автоматически продолжаются после оценки действий"

, Если Ваше Приложение встречается с проблемой расположения, выполнение приостанавливается. С инструкцией "распараллеливают возврат", функция UIViewAlertForUnsatisfiableConstraints, которая распечатывает ошибку, вынуждена возвратиться, прежде чем предупреждающее сообщение будет распечатано в консоль.

С "c" управляют, чтобы выполнение Вашего приложения было продолжено (Примечание: "Автоматически продолжите после оценки действий", так или иначе не работает в этом случае)

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

3
ответ дан 31 October 2019 в 13:13

Другие вопросы по тегам:

Похожие вопросы: