gpt4 book ai didi

objective-c - 应用程序:openFile: did report error when trying to open own file type

转载 作者:行者123 更新时间:2023-12-03 17:19:49 27 4
gpt4 key购买 nike

我的应用程序有它自己独特的文件类型。当用户双击该文件并且应用程序未运行时,应用程序启动但报告以下错误:

Error dialog on dbl-click

我的应用程序基于 Chromium (CEF)。我既不使用 application:applicationWillFinishLaunching 也不使用 application:applicationDidFinishLaunching 来进行任何设置部分,但似乎 application:openFile 确实在应用程序完全启动之前被调用。

问题

  • 有没有办法等到应用程序完全初始化才能正确打开/处理文件
  • 是否有其他方法可以在应用程序完全初始化后调用

我的AppDelegate实现如下:

// ****************************************************************************
// application:openFile
// ****************************************************************************

- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
return [self processFile:filename];
}

// ****************************************************************************
// processFile
// ****************************************************************************

- (BOOL)processFile:(NSString *)file
{
std::string fileName([file UTF8String]);
au::arcwork::Handler* handler = au::arcwork::Handler::GetInstance();
handler->OnOpenFile(fileName);
return YES;
}

最佳答案

不要在 application:openFile: 方法中直接调用 [self processFile:filename],而是尝试将其存储到 ivar 中,然后调用 processFile: 应用程序何时完全初始化。

@property NSString *filenameToOpen;

- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
self.filenameToOpen = filename;
return YES;
}

// You should use other method, that will indicate that your app is finished initialization, if you had one
- (void)applicationDidFinishLaunching:(NSApplication *)theApplication {
if (self.filenameToOpen) {
[self processFile:self.filenameToOpen];
}
}

关于objective-c - 应用程序:openFile: did report error when trying to open own file type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com