Mac OS Xでは、Cocoaはイベント駆動型です。これは私がUIによって動かされることを意味します。ユーザーが何かをクリックしたり特定の領域を移動すると、イベントハンドラが呼び出されます。 MainはNSApplicationMain()を呼び出して、プログラムが終了するまで無限ループを作成します。Cocoaのイベント駆動型システム:バックグラウンドタスクはどこで実行されますか?
ユーザーが操作していないタスクはどうですか?プログラムの基本機能を提供するために、バックグラウンドで作業する必要のある作業はどこに置くのですか?たとえば、Photo Boothは、ユーザーがUIとやりとりしたときに特定のことを行います(つまり、ユーザーが特定のボタンをクリックしたときのビデオカメラの変更)。しかし、Photo Boothはカメラからフレームを連続的に取り出してビデオストリームを提供しています。
私の質問は、非UIタスクコードはどこに行くのですか? Main()は実際には可能ではありません。なぜなら、私は、プログラムが始まったときからではなく、プログラムの生涯を通して実行されるタスクが必要だからです。
私はMac OS X Snow Leopard(すべてのMacシステム(Lion OS X)で動作するものを望み、XcodeでObj-C Cocoaアプリケーションを使用しています)
ありがとうございます、スレッドは完璧なサウンドです。私は、すべての変数を宣言してスレッドを開始するための中央の場所が必要です。私はどこでこれをやるだろうか? – fdh
最後に、あなたのタスクは何かに応答して常に実行されます(何かが「時間が過ぎている」または「アプリケーションが起動した」場合でも)。 Photo Boothの例のように、ビデオキャプチャライブラリからのコールバックに応答して実行されます。ネットワークアプリケーションの場合、ネットワーク上の着信パケットに応答して実行されます。 「イベントドリブン」はGUIイベントにのみ適用されるものではありません。 –
アプリの起動によって「駆動」されるようにするには、コンソールアプリケーションと同じようにメインに配置しますか? – fdh