gpt4 book ai didi

objective-c - NSApplicationDelegate 应用程序 :openFile. 永远不会到达 openFile: 函数

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:11 24 4
gpt4 key购买 nike

我想打开一个文件,将其拖放到应用程序图标上。当我这样做时,我的应用程序被打开,因此文件扩展名定义明确并且与我的应用程序相关。但是 application:openFile: 函数永远不会被调用。所以我无法打开放在我的应用程序中的文件。我跟踪了 openFile: 但一直没有找到。

我找到的所有答案都只是在委托(delegate)中添加openFile:,仅此而已,但不是我的情况。

任何帮助将不胜感激。非常感谢。

这是我的环境。

plist 已经得到了要打开的文件的扩展名。当我放下文件时,我的应用程序会打开。

我在应用程序开始时初始化我的委托(delegate),

   mydelegate = [[MyController alloc] init];

在委托(delegate)中,

在包含中,

@interface MyController : NSObject <NSApplicationDelegate> {

@private

NSWindow *window;
}

@property (assign) IBOutlet NSWindow *window;

-(id) init;

-(BOOL) application: (NSApplication*)sharedApplication openFile:(NSString*) fileName;

@end

在 .m 文件中,

@implementation MyController

@synthesize window;


- (id)init{

self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillFinishLaunching:)
name:NSApplicationWillFinishLaunchingNotification object:nil];
}
return self;
}

- (void) applicationWillFinishLaunching:(NSNotification *)aNotification{

NSLog(@"applicationWillFinishLaunching");
}

-(BOOL) application: (NSApplication*)sharedApplication openFile:(NSString*) fileName {

NSLog(@"openFile=%@", fileName);
return YES;
}

@end

最佳答案

至少在上面提供的代码中,您没有明确地将应用程序的委托(delegate)设置为 MyController 的实例。你在任何地方设置代表吗?

紧接着 [[MyController alloc] init],试试这个:

[[NSApplication sharedApplication] setDelegate: mydelegate];

如果不建立此连接,应用将不知道应该由谁来处理委托(delegate)职责。

处理拖放到停靠图标上的最常见方法是简单地实现:

-(BOOL)application:(NSApplication *)sender openFile:(NSString *)path

作为 AppDelegate 类的一部分,在您启动项目时由 Xcode 自动为您生成。

关于objective-c - NSApplicationDelegate 应用程序 :openFile. 永远不会到达 openFile: 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19655919/

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