在 Mac OS X 上,Cocoa 是事件驱动的。我的意思是每件事都是由 UI 驱动的——用户单击某物或在某个区域上移动会导致调用事件处理程序。Main 只是调用 NSApplicationMain () 来创建一个无限循环,直到程序退出。
那些不是用户驱动的任务呢?我应该将需要在后台工作以提供程序基本功能的任务放在哪里?例如,当用户与 UI 交互时,Photo Booth 会执行某些操作(即当用户单击某个按钮时更改为摄像机)。但是,Photo Booth 也不断地从相机中检索帧以提供视频流。
所以我的问题是非 UI 任务代码去哪里了?Main() 是不可能的,因为我需要任务在程序的整个生命周期中运行,而不是在程序刚启动时运行。
我在 Mac OS X Snow Leopard 上(我想要一些适用于所有 Mac 系统的东西:即 Lion OS X)并且在 Xcode 中使用 Obj-C Cocoa 应用程序。