Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 跨类访问NSApplicationLegate方法_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c 跨类访问NSApplicationLegate方法

Objective c 跨类访问NSApplicationLegate方法,objective-c,macos,cocoa,Objective C,Macos,Cocoa,在applicationelegate.h中,我有: @interface appDelegate : NSObject <NSApplicationDelegate> - (IBAction)showPage:(id)sender; 我想用如下按钮触发该功能: - (IBAction) clickAction:(id)sender { [showPage:nil]; NSLog(@"Clicked and the page is shown"); } 跨类访问show

applicationelegate.h
中,我有:

@interface appDelegate : NSObject <NSApplicationDelegate>

- (IBAction)showPage:(id)sender;
我想用如下按钮触发该功能:

- (IBAction) clickAction:(id)sender {
  [showPage:nil];
  NSLog(@"Clicked and the page is shown");
}

跨类访问
showPage
函数的正确方法是什么?

从当前应用程序获取委托,然后对其调用方法

[(appDelegate*)(NSApplication.sharedApplication.delegate) showPage:nil];

从当前应用程序获取委托,然后对其调用方法

[(appDelegate*)(NSApplication.sharedApplication.delegate) showPage:nil];

不要硬链接行动,只需将行动发送给第一响应者

这是一个占位符对象,在运行时将解析为第一个响应者(输入字段、视图等),并通过搜索链向上搜索,直到最终请求应用程序代理响应消息

了解操作系统X中的事件处理基础知识:
不要将动作硬链接,只需将动作发送给第一响应者即可

这是一个占位符对象,在运行时将解析为第一个响应者(输入字段、视图等),并通过搜索链向上搜索,直到最终请求应用程序代理响应消息

了解操作系统X中的事件处理基础知识:

不,这不是代理存在的原因<代码>NSApplicationLegate的存在是为了对系统事件做出反应,而不是作为单例使用。@vikingosegundo-足够公平。我想我应该说的是,对于委托人来说,这是一个非常常见的用例,不管它是否打算这样使用。不,这不是委托人存在的原因<代码>NSApplicationLegate的存在是为了对系统事件做出反应,而不是作为单例使用。@vikingosegundo-足够公平。我想我应该说的是,对于委托人来说,这是一个非常常见的用例,不管它是否打算这样使用。