Хорошо, относительно новая (опять же) цель C, пришедшая из фона Swift. В нашей кодовой базе у нас есть эта строка кода ...
return _queryURL && ![[UIApplication sharedApplication] canOpenURL:_queryURL];
, и пока она работает, при отладке Xcode выдает предупреждение о том, что canOpenURL
должен быть выполнен из потока переднего плана.
'Достаточно просто', я думаю ... 'Я просто вызову его синхронно в потоке переднего плана!' и я обновляю код следующим образом ...
__block BOOL result = NO;
dispatch_sync(dispatch_get_main_queue(), ^{
result = _queryURL && ![[UIApplication sharedApplication] canOpenURL:_queryURL];
});
return result;
... но теперь, когда я выполняю строку, которая вызывает canOpenURL
, я получаю это ...
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
А ?! Почему толкание его в основной поток вызовет EXC_BAD_INSTRUCTION
cra sh? Это отвлекающий маневр?
Что еще более важно, как вы решаете эту проблему?