没有NSApplication实例的Mac OS X应用程序是否可以?

时间:2016-07-29 05:00:55

标签: objective-c macos cocoa

在Info.plist中,我有一个键“Application is background only”,其值为“Yes”。 大多数代码都是用C ++编写的。

通常的最后一行

return NSApplicationMain(argc, argv);
删除了main()中的

。相反,main会启动一些线程,阻塞并在某些条件下等待退出。

2 个答案:

答案 0 :(得分:1)

是的,没关系。 NSApplication在AppKit中声明,因此仅在GUI应用程序中使用。应用程序可以使用Foundation,它不需要NSApplication。

答案 1 :(得分:1)

是和否。

你可以拥有一个没有它的进程(通俗地说是一个应用程序),它可以在Unix方面正常运行,并且就像任何其他无头进程一样。

你不能拥有的是一个完整的Cocoa应用程序意义上的应用程序,因为NSApplication(或子类)的实例不仅仅是你的应用程序的一部分,真正意义上的主应用程序对象应用程序。读取Info.plist,挂钩到Cocoa应用程序系统,Applescript系统等等都是由NSApplicationMain()完成的,这使得它成为资本A应用程序的要求。

你可以自己设置一些这些东西,但我不知道有什么方法可以这样做,即使我这样做了,我也不会推荐它。如果您希望程序的行为类似于应用程序并与Cocoa方面进行交互,那么return NSApplicationMain(argc, argv);就是等待结束main()