Mac OS Xでは、Cocoaはイベント駆動型です。これは、それぞれがUIによって駆動されることを意味します。ユーザーが何かをクリックしたり、特定の領域を移動したりすると、イベントハンドラーが呼び出されます。MainはNSApplicationMain()を呼び出すだけで、プログラムが終了するまで無限ループを作成します。
ただし、ユーザー主導ではないタスクについてはどうでしょうか。プログラムの基本機能を提供するために、バックグラウンドで動作する必要のあるタスクをどこに配置しますか?たとえば、フォトブースは、ユーザーがUIを操作するときに特定のことを行います(つまり、ユーザーが特定のボタンをクリックするとビデオカメラに変わります)。ただし、フォトブースは、ビデオストリームを提供するために、カメラからフレームを継続的に取得しています。
だから私の質問は、UI以外のタスクのコードはどこに行くのですか?Main()は、プログラムが開始されたばかりのときではなく、プログラムの存続期間全体にわたって実行するタスクが必要なため、実際には可能ではありません。
私はMacOSX Snow Leopard(つまり、すべてのMacシステムで動作するものが必要です:Lion OS X)を使用しており、XcodeでObj-CCocoaアプリケーションを使用しています。