我有一个全局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
答案 0 :(得分:1)
哇!在一些帮助下我解决了它:在SBApplication(在本例中为SafariApplication)上只需setTimeout:
一小段时间间隔,如1或2(秒),代码不会使你的程序死锁,但只是继续等待1或2秒。
在这种情况下,导致死锁的方法将返回nil。