問題タブ [runloop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - cancelPreviousPerformRequest と cancelAllOperations の比較
今は両方使ってるけどどっちがいいのかわからない 違いは何ですか?私が知っているあいまいな質問。wwdcの準備
sockets - CFWriteStreamScheduleWithRunLoop が機能する場合と機能しない場合がありますか?
私は非同期ソケット プログラミングを行っていますが、ほとんどの場合、コードは機能しますが、機能しない場合もあります。要点は次のとおりです。ソケット ペアを作成し、読み取りストリームと書き込みストリームを作成します。次に、何かを書きたい場合は、別のスレッドの実行ループでスケジュールします。そのようです:
... myWriteStreamCallback は正しい形式の静的関数です...
ソケット/ストリームは次のように開かれました:
ここで問題があります: このコード (そして、それが誰かの役に立てばもっとあります) は、ほぼ正しく動作します。ただし、プログラムの最初の段階で、この方法でデータを送信しようとすると、ソケットのコールバックが実行ループに正しく配置されることがありますが、呼び出されることはありません。プログラムの後半で、同じコードが別のソケットで実行され、コールバックが呼び出されます (ソケットは同じアドレスに移動します)。
これが漠然としていることはわかっていますが、すべてのコードを投稿する前に、これを引き起こす可能性のあることについて大まかなアイデアを持っている人はいますか? つまり、ランループでコールバックが呼び出されないことがあります。
そうそう、これは明らかにある種の競合状態であることを付け加えておく必要があります。適切な場所にログ ステートメントを追加することで、問題を確実に解消することができます。そして、まったく同じコードで、機能する場合と機能しない場合があります。楽しい楽しいです。
iphone - iPhoneでSimplePingを試してみましたが、メインのランループはSimplePingからのイベントを処理しません
iPhone で簡単なピンガーが必要です。そこで、SimplePing の例 を iPhone で実行してみます。しかし、例のようにピンガーを初期化すると、メインの実行ループは SimplePing によって生成されたイベントを処理しません。ここに初期コードがあります:
この関数で runloop を直接トリガーすると、次のようになります。
できます。私の質問は、イベントが のメイン実行ループで処理されないのはなぜですか? また、メイン実行ループでUIApplicationMain
これを実行するにはどうすればよいですか?
objective-c - キープレスで NSRunLoop を停止する
Mac OS X でコマンド ライン基盤ツールを作成していますが、'q' などのキーを押すとツールを終了したいと考えています。このコードは、リモート サーバーからデータを取得するための非同期要求を開始しています。これには NSRunLoop が必要です。少なくとも、それが私がしなければならないことだと私は理解しています。
特定のキープレスでランループを停止する方法を教えてもらえますか?
以下はコードスニペットです。
ありがとうございました!
iphone - (iphone)ここでランループを適切にセットアップする方法は?たくさんの質問
Apple のスレッド プログラミング ガイドを読み始めたところです。
私はスレッドを開始し、それへの参照を持っています
threadMain はドキュメントのサンプルコードのように見えます。
このスレッドを終了するには、コード内の「exitNow」変数をメイン スレッドから変更する必要がありますが、その方法がわかりません。
myThreadMain ループは、作業を実行していないときにスリープする必要がありますが、実装方法もわかりません。
ドキュメントには、新しいスレッドがすぐに終了しない場合、少なくとも 1 つの入力ソースが必要であると書かれていますが、新しいスレッドは「今すぐ終了」メッセージと performSelector:onThread: 呼び出しを受け取るだけで済みます。
入力ソースを設定する必要がありますか?
私はいくつかの仕事をこのスレッドに渡すつもりです
実行するセレクターは次のように定義する必要があります
が、これを実現する方法もわかりません。
それはたくさんの質問です...
私の質問を繰り返しさせてください。
- threadDictに格納されている「exitNow」変数の設定方法。
- 作業が必要ないとき (セレクターを実行していないとき) にスリープするようにスレッドをセットアップする方法。
- スレッドがすぐに死なないように、入力ソースを設定する必要がありますか?
- 「performSelector」への呼び出しごとに、同じセレクター(実行中の場合)がキャンセルされ、最初から実行されるように実行ループを設定する方法は?
前もって感謝します。
cocoa - ココアプログラミングでフレームごとに関数を呼び出す方法は?
cocoa アプリケーションにはメインの実行ループがあることは知っていますが、フレームごとに関数を呼び出す方法を教えてください。つまり、この関数はメイン ループのすべてのプロセスで呼び出す必要があります。+ (NSRunLoop*) currentRunLoop; の -(void) 実行によるものですか?
iphone - runloopsとapplication:didFinishLaunchメッセージの順序
Runloopsについての私の理解は基本的なものなので、これは非常に些細な質問のように思えるかもしれません。
私のapplication:didFinishLaunchingWithOptions
(またはapplicationDidFinishLaunching
)には次のものがあります:
これらの各メソッドは、リストされている順序で実行されますか、またはアプリのメイン実行ループがメインウィンドウを表示する作業を完了する前にステップ5が発生する可能性がありますか?'[window makeKeyAndVisible]'
runloopがウィンドウの表示を完了し、' 'が呼び出される前に最上位のビューであるビューをロードすることを保証するために、にラップするdoSomeTaskHere
必要がありますか?performSelectorOnMainThread:withObject:waitUntilDone:YES
doSomeTaskHere
ios - drawRect を今すぐ機能させる方法はありますか?
drawRect の上級ユーザーであれば、もちろん、「すべての処理が終了する」まで実際には drawRect が実行されないことを知っているでしょう。
setNeedsDisplay は、ビューと OS を無効としてフラグを立て、基本的にすべての処理が完了するまで待機します。これは、次のような一般的な状況では腹立たしいことがあります。
- ビューコントローラー 1
- いくつかの機能を開始します 2
- 段階的に 3
- ますます複雑なアートワークを作成し、4
- 各ステップで、NeedsDisplay を設定します (間違っています!) 5
- すべての作業が完了するまで 6
もちろん、上記の 1 ~ 6 を実行すると、ステップ 6 の後でのみ drawRect が 1 回実行されるだけです。
あなたの目標は、ポイント 5 でビューを更新することです。何をしますか?
iphone - iOSゲームとランループ管理
まず、私の質問:iOS Run-Loopをどのように管理しますか?
次の私の理由:私はさまざまなプロトタイプ(v。初期段階の開発)でこれを研究していて、多くの厄介な問題を発見しました。
- まず、入力の問題と実行ループにより、次のことを試してみます。
- 最も推奨されるシステム(CADisplayLink)を使用する場合、CPUの負荷によってバッファーフリップ(presentRenderBuffer)がフレームを待機する必要があると、特定のタッチ入力がドロップされることに注意しました。これはデバイスでのみ発生し、シミュレーターでは発生しません(迷惑なことに、これはメインスレッドでのvsyncブロッキングの待機と、アプリの実行ループプロセスが入力にタッチしてメッセージを食べる方法に関連しているようです)
- 次に推奨されるシステム(NSTimer)を使用する場合、CPU負荷がシミュレーターの特定のポイントに達すると、特定のタッチ入力がドロップされるが、デバイスではドロップされないことに気付きました(これも迷惑です)。NSTimerを使用すると、更新が発生したときの精度も大幅に低下します。
- 最も推奨されていないシステムを使用する場合(mach_absolute_timeから構築された高精度タイマーを使用して内部で管理されている独自のスレッドで実行ループを実行すると、タッチ入力の問題はすべて解消されますが、ASSERTコードは間違ったスレッドにトラップされます。ソフトウェア割り込みに続いて(私のアサートコードはhttp://iphone.m20.nl/wp/?p=1に似ています)問題の原因となった行ですぐにアサートコードトラップを実行するのが本当に好きなので、この解決策は次のとおりです。私にとっては実際には機能しません:デバッグが難しいです。
- 第二に、失われた時間:
- システムを調査していると、フレームレートに関係なく(奇妙なことに、統計的にはvsyncを使用しても意味があると思います)、vsyncで約22%の時間待機していることがわかりました。これは、glFlush / glFinishを移動し、presentRenderBuffer呼び出しを実行する頻度を試して確認しました。これは、ブロックしているgl呼び出しで単にストールするのではなく、AIなどを処理したい重要な時期です。これについて私が考えることができる唯一の方法は、レンダリングをそれ自体のスレッドに移動することですが、シングルプロセッサデバイスでマルチスレッドの再設計を開始することが保証されているかどうかはわかりません。
それで、誰かがこれらの問題の周りに魔法の弾丸を見つけましたか?誰かがこのプラットフォームでキックアスであるキラーランループアーキテクチャを持っていますか?現時点では、私は悪の少ない方を選ばなければならないようです。
objective-c - runModalForWindow は http 要求を抑制します
URL接続があり、通常は正常に動作します
しかし、モーダルウィンドウを作成すると、リクエストが応答を受け取ることはありません:
この行をコメントアウトして「標準」ウィンドウを作成すると、すべてが機能します。
私は NSURLConnectionDelegate からすべてのメソッドを実装しようとしましたが、呼び出されたメソッドは 1 つもありませんでした。
これは「実行ループ」に関するものだと思いますが、この分野での経験はほとんどありません。誰もこれについて経験がありますか?
ありがとうございました