Я понимаю, что XCode поймает unsatifyable NSLayoutConstraints
и предоставит вам некоторую информацию об этом, однако я не знаю, как взять адреса памяти элементов управления/ограничений и сопоставить их с которые имеют проблемы.Сопоставление адреса памяти неудовлетворительных NSLayoutConstraints с элементами управления пользовательского интерфейса
Мое приложение довольно большое (около 20 экранов), некоторые из них большие UIViewControllers с несколькими контроллерами детского представления внутри них. Некоторые из них - UITableViews с пользовательскими ячейками и UICollectionViews с пользовательскими ячейками. У меня ад времени лавируя вниз причину этой ошибки (что происходит при вращении ландшафтном)
Вот информация из моей консоли:
2013-05-02 11:18:53.225 Smile[7519:c07] 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)
(
"<NSAutoresizingMaskLayoutConstraint:0x16083b60 h=-&- v=-&- UIView:0xa5a1d00.width == UIWindow:0xa09eee0.width>",
"<NSLayoutConstraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-| (Names: '|':UIView:0xa5a1d00)>",
"<NSLayoutConstraint:0xa5a2140 V:|-(0)-[UIView:0xa59f160] (Names: '|':UIView:0xa5a1d00)>",
"<NSAutoresizingMaskLayoutConstraint:0xa593340 h=--- v=--- H:[UIWindow:0xa09eee0(768)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xa5a2180 V:[UIView:0xa59f160]-(954)-| (Names: '|':UIView:0xa5a1d00)>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
Как вы можете видеть, есть память адреса указаны. Вставка их в панель поиска окна просмотра не показывает многого. Кроме того, просеивая потоки и очереди вызовов, я получаю только разобранный код на этой точке останова (контрольная точка исключения).
visualizeConstraints работает только на OS X –
Упс! По какой-то причине я думал, что UILayoutConstraint - вещь, и поэтому я думал, что это на Mac. Наверное, я недостаточно внимательно прочитал вопрос! –