Удар по утверждению не удался: (NSViewIsCurrentlyBuildingLayerTreeForDisplay ()! = NowBuildingLayerTree) - PullRequest
0 голосов
/ 27 июня 2018

В MacOS X High Sierra 10.13.4 и 10.13.5 я столкнулся со следующим утверждением и прерыванием:

Утверждение не выполнено: (NSViewIsCurrentlyBuildingLayerTreeForDisplay ()! = NowBuildingLayerTree), функция NSViewSetCurrentlyBuildingLayerTreeForDisplay, file /BuildRoot/Library/Caches/com.apple.xubKa/Ak/Ax.Amp.App.AjSAjSAjSAX.SAX.Sa.Sa.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S............ .Итом., В том числе линия 14485

Кажется, что утверждение всегда происходит случайно в одной из этих трех строк кода:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.courseWindowController showWindow:self];
        [[self.courseWindowController window] makeKeyAndOrderFront:self];
        [[self.courseWindowController window] setParentWindow:mainWindow];
    });

Кто-нибудь еще испытывал это и как вы решили это?

1 Ответ

0 голосов
/ 30 июня 2018

@ robmayoff был прав. Я останавливал занятого прядильщика из основного потока. Вы можете установить переменную среды CA_ASSERT_MAIN_THREAD_TRANSACTIONS = 1, и она покажет вам.

Вы можете установить переменную среды в Xcode -> Меню продукта -> Подменю схемы -> Редактировать схему ... Выберите «Выполнить», а в разделе переменных среды вы можете установить CA_ASSERT_MAIN_THREAD_TRANSACTIONS. Затем запустите приложение в отладчике, и вы найдете проблему.

...