在我的 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/