NSApplication(mac appkit)

NSApplication 是一个管理应用的事件循环和所用资源的对象,每一个应用都用了一个NSApplication类型的对象去控制事件循环,监听和更新应用的各个窗口(windows)和菜单,将事件分配到恰当的对象(即他自己或者他的一个window),生成自动释放池,接收应用级别(app-level)事件的通知。NSApplication对象有一个delegate(一个你分配的对象),应用程序启动、终止、激活、隐藏、用户要打开文件等生命周期事件会在这个delegate里收到通知。通过设置委托,实施委托方法,您定制你的应用程序的行为,而无需创建NSApplication的子类。在你的应用程序的main()函数中,你可以通过调用shared类方法创建NSApplication实例。创建应用程序对象后,main()函数会加载应用程序的主nib文件,然后调用循环run()消息,开始应用程序对象的事件循环(event loop)。

void NSApplicationMain(intargc,char*argv[]) {
[NSApplication sharedApplication];
[NSBundle loadNibNamed:@"myMain" owner:NSApp];
[NSApp run];
}

shared 类方法初始化了显示环境,将程序链接到窗口服务和显示服务。NSApplication 对象持有所有该应用使用的NSWindow 对象,所以它可以检索到这个应用的任何一个NSView对象。

share 类方法还初始化了一个NSApp类型的全局变量(global),你可以用这个变量检索NSApplication实例。shared 方法只会使所有这些初始化一次,多次调用shared 方法,都是得到第一回初始化出来的NSApplication实例。

这个NSApplication实例扮演了非常重要的角色:它要从窗口服务捕获到用户事件,并将其分配到恰当的NSResponder对象那里。NSApp将事件转为一个NSEvent对象,然后将它传给对应的NSWindow对象。所有的键盘和鼠标事件直接被传送给与之对应的NSWindow对象。

你可能感兴趣的:(NSApplication(mac appkit))