在我的 Obj-C 应用程序中,我使用以下代码在 Pages(或任何其他应用程序)中打开文件:

[[NSWorkspace sharedWorkspace] openFile:theUrl withApplication:@"Pages"];

主要是在打开较大的文件时,这可能需要几秒钟才能完成。
所以我希望我的应用程序等待 Pages 直到它完全打开文件。

以下代码是我想要的方式:
[[NSWorkspace sharedWorkspace] openFile:theUrl withApplication:@"Pages" onFinish:@selector(pagesfinishedopening)];

当然,我可以简单地使用 sleep() 函数,但这会减慢小文件的应用程序速度,并且当文件大于异常(exception)时将不起作用。

我已经用 NSApplication 尝试了一些东西,但是不尊重在 Pages 中打开文件,只能监视目标应用程序的启动。

有任何想法吗?

最佳答案

您可以监听来自 NSWorkSpace 的 notifications,如下所示

- (void)myMethod {
    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
                                                       selector:@selector(appDidLaunch:)
                                                           name:NSWorkspaceDidLaunchApplicationNotification
                                                         object:nil];

    [[NSWorkspace sharedWorkspace] openFile:theUrl withApplication:@"Pages"];
}

- (void)appDidLaunch:(NSNotification*)notification {
    NSLog(@"app info: %@", [notification userInfo]);
}

关于cocoa - -[NSWorkspace openFile :withApplication:] wait for opening Application,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8897817/

10-16 08:05