SBApplication(在本例中为SafariApplication)导致SIGKILL(Objective-C)

时间:2015-03-17 16:54:37

标签: objective-c macos safari applescript scripting-bridge

我有一个全局SafariApplication变量(来自Scripting Bridge生成的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但结果却一样。

请帮帮我。

提前致谢,

Erik van der Plas

1 个答案:

答案 0 :(得分:1)

哇!在一些帮助下我解决了它:在SBApplication(在本例中为SafariApplication)上只需setTimeout:一小段时间间隔,如1或2(秒),代码不会使你的程序死锁,但只是继续等待1或2秒。 在这种情况下,导致死锁的方法将返回nil。