在我的应用中,我想在网络浏览器中打开多个网址。
我是这样做的:
int options = NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchWithErrorPresentation;
[[NSWorkspace sharedWorkspace] openURLs: urls
withAppBundleIdentifier: @"com.apple.safari"
options: options
additionalEventParamDescriptor: nil
launchIdentifiers: nil];
Safari现在只能一次打开六个网址,当我使用NSWorkspaceLaunchWithErrorPresentation
时,我收到以下错误消息:
您无法打开应用程序“Safari”,因为它没有响应。
现在,当我将软件包标识符设置为com.google.Chrome
时,情况会更糟,只打开4个标签页。 Firefox(org.mozilla.firefox
)也会打开6个标签。
答案 0 :(得分:2)
解决您所描述的限制的一种简单方法是使用等待或休眠功能。它应该允许您打开尽可能多的URL:
-(void)openURLs {
for (int i = 0; i <= 18; i++) { // open 18 URLS for this example
NSString *url = @"http://google.com";
[self openURL:url];
[NSThread sleepForTimeInterval:0.2f]; // wait .02 second
}
}
- (void)openURL:(NSString *)url {
int options = NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchWithErrorPresentation;
NSArray *urls = [NSArray arrayWithObject:[NSURL URLWithString:url]];
[[NSWorkspace sharedWorkspace] openURLs: urls
withAppBundleIdentifier: @"com.apple.safari"
options: options
additionalEventParamDescriptor: nil
launchIdentifiers: nil];
}
注意:根据您要加载网址的方式(在后台等),您可以使用调度队列使用单独的线程加载它们。