私は、Cocoa環境に存在しないプログラムのプラグインを作成しています(C++のコマンドラインプログラムと思われます)。関心があるなら、これはv8ノードアドオンシステムです。私は、画面を記録するには、このプラグインを好きなので、だから、基本的にAVCaptureSessionなどを利用して、のようなものだろう:実際には非ココアアプリからFoundationにコールするとき、NSRunLoopが必要ですか?
void start(/*entry*/)
{
// No run loop is *necessarily* present.
AVCaptureSession * session = ...
}
void stop (/*entry*/)
{
// etc..
}
、私はおそらくそうではこのようなものを行うには、新しいpthreadのを開始しますそれがブロックされていないこと私の質問は、周辺の基盤インフラの整備がどれだけ必要かということです。私は印象を取得しない場合AVCapture中などあらゆるtrickinessが失敗する可能性があること、私はほぼ確実@autoreleasepool {}を必要とするが、私は実際にスレッドで実行するために私自身のデフォルトNSRunLoopを起動する必要があります。
BOOL isStillRecording = YES;
void start(/*entry*/)
{
// setup avcapture and what have you.
NSRunLoop *theRL = [NSRunLoop new];
while (isStillRecording && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);
}
void stop(/**entry**/)
{
// kill avcapture, maybe through async_dispatch to not stop on the start up.
isStillRecording = NO;
}