我正在开发作为启动守护进程管理的 Mac OS X 服务。它没有任何 GUI,但它的结构是一个使用 NSApplicationMain 运行的 Cocoa 应用程序。
似乎即使没有 GUI,也存在问题 - 在终端窗口中通过 launchctl 启动时一切正常,但是在启动进程时系统重新启动时,我确定一旦调用 NSApplicationMain() 进程就会得到卡住。应用程序委托方法 applicationDidFinishLaunching: 永远不会被调用(这是我们初始化服务的地方)。也没有记录错误并且 NSApplicationMain() 不返回。
我已经梳理了启动服务文档,但我没有看到任何提及这个问题,也没有发现任何信息表明非 GUI NSApplication 运行时需要存在登录或窗口服务器。
任何人都有这方面的经验,知道一个常见的问题或有一个明确的答案是否有可能在启动时启动一个非 GUI NSApplication-based launchd 服务?