SBApplication (в данном случае SafariApplication) приводит к SIGKILL (Objective-C)

У меня есть глобальная переменная SafariApplication (из сгенерированного заголовка Safari моста сценариев), которую я, конечно, установил для приложения Safari:

self.safari = [SBApplication applicationWithBundleIdentifier:@"com.apple.Safari"];

Затем я проверяю URL текущей вкладки, выполнив:

SBElementArray *windows = [self.safari windows];
SafariWindow *window = [windows objectAtIndex:0];
SafariTab *tab = [window currentTab];

NSURL *url = [NSURL URLWithString:[tab URL]];

Это отлично работает. Я делаю это дважды в секунду, чтобы получить непрерывную информацию о том, что пользователь открывает в Safari.
Но когда я открываю новую вкладку в Safari, просто иногда (возможно, когда код работает одновременно с открытием новой вкладки), она вылетает и выдает SIGKILL. В большинстве случаев это происходит на NSURL *url = [NSURL URLWithString:[tab URL]]; 'линия, но это действительно зависит.

Я знаю, действительно странно, но я понятия не имел, что это вызвало.

Я пытался сделать то же самое, но затем с AppleScript, но это закончилось тем же.

Пожалуйста, помогите мне.

Заранее спасибо,

Эрик ван дер Плас

1 ответ

Решение

Вот Это Да! С некоторой помощью я решил это: просто setTimeout: на SBApplication (в данном случае SafariApplication) на небольшой промежуток времени, например 1 или 2 (секунды), и код не заблокирует вашу программу, а просто продолжит работу через 1 или 2 секунды ожидания. В этом случае метод, который вызывает взаимоблокировку, вернет ноль.

Другие вопросы по тегам