NSApplication没有可见的@interface声明openURL选择器

3

我很新于Objective C,并且以前没有用过MVC系统。

我正在尝试通过默认浏览器重定向到一个URL,这是相关的代码:

AppDelegate.h

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;

...

- (IBAction)about:(id)sender;

...

@end

声明操作

AppDelegate.m

@implementation AppDelegate

...

- (IBAction)about:(id)sender {

    NSURL *web_url = [NSURL URLWithString:@"http://www.someurl.com/"];
    [[NSApplication sharedApplication] openURL:web_url]; // error location
}

...

@end

关于在按钮点击时实现操作:

IDE错误:NSApplication没有声明openURL选择器的可见@interface

问题似乎是什么?


在 App Delegate 中使用 IBAction?你应该将 IBAction 放在视图控制器/视图中。 - Raptor
1个回答

11

你可能在混淆iOS和OS X。你的错误信息与以下相关:

[[NSApplication sharedApplication] openURL:web_url];

并且指出NSApplication没有名为openURL:的方法。在iOS上,UIApplication类有这样一个方法,而在OS X上,NSWorkspace类也有这样一个方法。鉴于您使用了NSApplication,我猜想您想要针对OS X情况,并且应该使用:

[[NSWorkspace sharedWorkspace] openURL:web_url];

NSWorkspace的openURL方法在哪里执行?UIApplication的openURL方法在iOS中在appDelegate上执行。 - Laureano Bonilla
我发现了这个http://stackoverflow.com/questions/6303485/nsattributedstring-clicks,我可以解决我想要的问题。我的评论可能没有用,我可能很快就会删除它,以防你想删除你的评论。 - Laureano Bonilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接