macos - 当我双击文件并且应用程序尚未运行时,我的应用程序无法打开文件

标签 macos cocoa

当我双击文件时,我的应用程序可以打开它应该使用的文件类型,并且该应用程序已经在运行。但是,当应用程序尚未运行并且我双击文件时,应用程序会启动,但不会打开该文件。为什么会这样?

应用程序委托(delegate)实现以下方法:

-(void) application:(NSApplication *)sender openFiles:(NSArray *)filenames {
    for (NSString *name in filenames) {
        NSLog(@"Openning files");
        [self.topController addFileAtPath:name];
    }
}
-(BOOL) application:(NSApplication *)sender openFile:(NSString *)filename {
    NSLog(@"Openning file_");
    [self.topController addFileAtPath:filename];
    return YES;
}

最佳答案

对于那些可能陷入同样陷阱的人:

事实证明,上面的方法比“-applicationDidFinishLaunching:”更早被调用,在“-applicationDidFinishLaunching:”中我正在执行所有应用程序初始化。我最终创建了一个“事件”标志(以显示我的应用程序是否已初始化),并将所有初始化逻辑放在一个单独的方法中。然后,在我的“...finishedLaunching”、“openFiles”和“openFile”中,我检查该标志是打开还是关闭,并相应地调用应用程序初始化方法:

@implementation DTVAppDelegate
BOOL alive = NO;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    if (!alive) {
        [self startApp];
    }
}
- (void) startApp {
    // init logic
    alive = YES;
}
-(void) application:(NSApplication *)sender openFiles:(NSArray *)filenames {
    if (!alive) {
        [self startApp];
    }
    for (NSString *name in filenames) {
        NSLog(@"Openning files");
        [self.topController addFileAtPath:name];
    }
}

关于macos - 当我双击文件并且应用程序尚未运行时,我的应用程序无法打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550215/

相关文章:

java - mvn -v 给我 "Unsupported major.minor version 51.0"

python - Mac OS X Python ctypes cdll 错误 : image not found

macos - Cocoa 文本系统中的幻像字符

ios - Multipeer Connectivity Framework 不再连接

objective-c - CoreText CopyFontsForRequest 收到 mig IPC 错误

macos - AppleScript 或 Automator 可以单击应用程序中的菜单吗?

objective-c - 有什么方法可以将 mouseOver 事件添加到 cocoa 中的 tableView 中吗?

objective-c - NSMenuItem 中的中心图标

objective-c - 如何在 Objective-C 中复制 AppleScript 函数?

objective-c - 在objective-c/cocoa中抛出异常