Objective c 如何写一个“";系统过程“;(启动过程)在Mac上使用Xcode?

Objective c 如何写一个“";系统过程“;(启动过程)在Mac上使用Xcode?,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我需要写一个应用程序,将运行在后台或作为一个系统进程在Mac上。它需要在启动时运行,甚至在没有用户登录时也需要运行 我有Xcode 3.2.6(在这里使用Xcode 4不是我的选择)-我应该使用什么类型的项目?当我准备部署它时,如何“安装”它,以便在计算机启动时自动启动 编辑 我最大的问题是使用什么类型的项目。我需要一个进程,将保持运行,将监测服务器,并发送更新的信息每隔几分钟 我最初为此创建了一个命令行工具。主线程运行并立即存在,因此我将其置于无限循环中,该循环休眠线程并通过NSTimer执行

我需要写一个应用程序,将运行在后台或作为一个系统进程在Mac上。它需要在启动时运行,甚至在没有用户登录时也需要运行

我有Xcode 3.2.6(在这里使用Xcode 4不是我的选择)-我应该使用什么类型的项目?当我准备部署它时,如何“安装”它,以便在计算机启动时自动启动

编辑

我最大的问题是使用什么类型的项目。我需要一个进程,将保持运行,将监测服务器,并发送更新的信息每隔几分钟


我最初为此创建了一个命令行工具。主线程运行并立即存在,因此我将其置于无限循环中,该循环休眠线程并通过NSTimer执行所需的任何处理。这是错误的方法吗?有更好的方法吗?这就是我想要的。

您描述的是Mac上的守护进程。您需要阅读有关如何构建它们的说明

最常见的形式是在文档中描述的
launchd
下运行的启动守护程序。这些适用于Mac OS X 10.4及更高版本

在10.4之前,存在“启动项”。除非需要在10.4之前的系统上运行,否则不要使用这些启动项

这是另一份值得一读的文件

编辑

是的,命令行模板是最好的起点


大多数守护进程应该是“按需”的。这意味着当“有趣的事情”发生时,它们应该让launchd运行它们,然后它们应该继续运行以处理其他事件,最后它们应该让launchd在一段时间内没有事件发生时杀死它们。什么是“有趣的事件”取决于你的问题。常见事件是套接字上的通信量、对文件的更改或队列目录中存在的文件。Launchd可以在任何情况下自动运行您。

感谢您提供的链接-我仍然想知道应该使用哪种类型的Xcode项目。那么它是一个命令行工具吗(请参见我的编辑以获得澄清)?