一、Mac应用的入口点
和类C程序一样,Mac应用也是以main函数为入口点的。这个main函数的任务就是使用AppKit框架为一个程序做好足够的准备。使用Xcode创建一个项目的时候,系统会自动创建一个main函数。
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMaom(argc, (const char **) argv);
}
NSApplicationMain的过程:
该函数只要目的是初始化应用,为真正启动应用做准备。这个函数做三件事情:
1.创建NSApplication单利:创建完之后,在其他地方任意地方只要调用sharedApplication方法就能获得该对象。
2.加载资源文件(nib file):加载哪个nib文件是在Info.plist文件里面写明的。系统会通过NSMainNibFile这个键像查字典一样找到对应的值。在这个主nib文件中应该包含应用代理(Application deleagte)和其他必须在启动循环之前加载的对象。那些不需要的就应该和这个主nib文件隔开。
3.调用run函数:调用run函数,进入主循环。程序从启动阶段到处理事件阶段。
调用了run函数之后,看似程序已经启动了,但是不是这样的,这才是Cocoa应用的开始。run函数会通知应用代理(Application delegate)说,我启动了,你帮我做事情吧。然后代理(application delegate)就去呈现应用菜单栏