Подтвердить что ты не робот

Отключить сообщения об ошибках ограничения автоопределения на выходе консоли отладки в 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.
4b9b3361

Ответ 1

Произошла декомпиляция и на самом деле способ:

Свифта

NSUserDefaults.standardUserDefaults().setValue(false, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")

Objective-C

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

Теперь вы получите уведомление только о том, что "_UIConstraintBasedLayoutLogUnsatisfiable is OFF".

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

Ответ 2

Решение Swift 3.0:

//Hide Autolayout Warning
UserDefaults.standard.setValue(false, forKey:"_UIConstraintBasedLayoutLogUnsatisfiable")

Ответ 3

Я попытался решить это с помощью lldb, и я нашел решение:

  • Создать символическую точку останова для символа UIViewAlertForUnsatisfiableConstraints в модуле UIKit.
  • В качестве действия точки останова добавьте команду отладчика "возврат потока"
  • Добавить вторую команду отладчика: "c"
  • Отключить "Автоматически продолжить после оценки действий "

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

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

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

Ответ 4

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

UserDefaults.standard.set(false, forKey: "NSConstraintBasedLayoutLogUnsatisfiable")
UserDefaults.standard.set(false, forKey: "__NSConstraintBasedLayoutLogUnsatisfiable")