- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
main.m
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}
CoolClass.h
#import <Cocoa/Cocoa.h>
@interface CoolClass : NSObject <NSApplicationDelegate> {
}
- (void) applicationDidFinishLaunching : (NSNotification *) aNotification;
@end
CoolClass.m
#import "CoolClass.h"
@implementation CoolClass
- (void) applicationDidFinishLaunching : (NSNotification *) aNotification {
NSLog(@"THIS SHOULD BE PRINTED TO THE DEBUG CONSOLE");
}
@end
我也尝试过“applicationWillFinishLaunching”,但仍然没有运气。任何帮助将不胜感激。谢谢。
最佳答案
您缺少的是,采用该协议(protocol)使得 CoolClass 类型的对象准备好充当任何 NSApplication 对象的委托(delegate)(前提是您遵循声明并实现协议(protocol)的所有必需方法)。当您将类的实例设置为应用程序的委托(delegate)时,声明与协议(protocol)的一致性还可以防止编译器发出警告。
但是对于一个特定的应用程序对象(比如 Cocoa 为你创建的共享 NSApplication 对象)来说,要知道将消息从协议(protocol)发送到特定的 CoolClass 对象,你必须将你想要接收这些消息的对象设置为特定的对象。应用程序对象的委托(delegate)。
这意味着,在应用程序发送您想要接收的消息之前,需要实例化一个 CoolClass 对象 - 将其称为 c
- 并告诉应用程序,“嘿,你的委托(delegate)人是这里的c
,所以从现在开始就向这个小家伙发送委托(delegate)消息。”
归根结底,这些代码行必须在应用程序完成启动之前执行:
CoolClass *c = [[CoolClass alloc] init];
[[NSApplication sharedApplication] setDelegate:c];
实现这种情况的最简单方法是让 Interface Builder 为您完成工作:让 MainMenu nib 实例化您的 CoolClass,并在加载 nib 时将 Cool 类对象设置为应用程序的委托(delegate),正如其他人所建议的那样。
为此,请打开 MainMenu.xib。将自定义对象拖到 xib 中,并在检查器中将其类更改为 CoolClass。按住 Ctrl 键并拖动(或右键单击拖动)从 xib 中的应用程序对象到 CoolClass 对象,然后选择“委托(delegate)”。保存、构建并运行。
关于objective-c - 为什么我的 NSApplicationDelegate 类中的 applicationWillFinishLaunching 从未被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243100/
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visi
假设默认的 Xcode Cocoa 应用程序模板,其中应用程序委托(delegate)位于主 XIB 文件中。 当然,applicationWillFinishLaunching:是在applicat
main.m #import int main(int argc, char *argv[]) { return NSApplicationMain(argc, (const char *
在用户开始使用我的应用程序之前,我必须向他们显示自定义许可协议(protocol)对话框。因此,我在 mainMenu.xib 中添加了新窗口,并使用模态方式显示该窗口 [NSApp runModal
我是一名优秀的程序员,十分优秀!