Странный сбой NSOutlineView - PullRequest
0 голосов
/ 17 октября 2018

Я испытываю странный сбой в NSOutlineView: когда я нажимаю кнопку «сворачивать», приложение сразу падает, и даже «точка останова исключения» не помогает понять, в чем проблема.

Я попытался запустить приложение без отладчика и воспроизвел проблему.После сбоя приложения у меня появилось окно сбоя OSX, и я смог извлечь из него сообщение о сбое:

The window has been marked as needing another Update Constraints in Window pass, but it has already had more Update Constraints in Window passes than there are views in the window

, там также есть стек вызовов, но это не поможет с момента сбоявнутри libsystem_c.dylib, поэтому я не публикую его здесь.

Кажется, что-то не так с автоматическим макетом.Абсолютно не имею представления о следующих шагах.Пожалуйста, дайте мне совет!

Также, еще одна вещь, которая началась только после обновления до OSX Mojave.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

После нескольких часов отладки и тестирования я заметил, что это сообщение вызвано "бесконечным циклом компоновки".

Другой код, связанный с контурным представлением, вызывал компоновку NSSplitView.И метод делегата - (CGFloat) splitView:(NSSplitView*)sender constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex был вызван около 200 раз до сбоя.

Трудно поймать этот bcs, это на самом деле не бесконечная рекурсия, поэтому просто отладчик не очень помогает.Я просто добавил простой код, который помог мне определить проблему:

static int a = 0; NSLog(@"Layout: %d", a++);

Надеюсь, мой опыт поможет кому-то еще!

0 голосов
/ 18 октября 2018

попробуйте отключить флажок «Использовать автоматическое расположение» в кончике (на вкладке «Инспектор файлов»).Возможно, придется отключить его для каждого вида.

Кроме того, не связано, но Мохаве заставляет вас использовать Core Animation.У большинства моих перьев отключен слой «Установить хочет».Однако в одном из моих перьев у меня был установлен блуждающий флажок setWantsLayer.когда я снял галочку, вид (NSSearchField) нарисовался правильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...