問題タブ [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.
objective-c - RunLoop にオブザーバーを追加してキーボード イベントを監視する
私のRun Loop Observerは次のように書かれています:
アプリケーションで任意のキーを押すたびに、observerCallbackが 4 回呼び出されます。問題は、 observerCallback内でキー コードを取得するにはどうすればよいかということです。ありがとう。
macos - Cocoaのネットワーク到達可能性を常に確認してください
アプリがネットワークに接続されているかどうかを常に確認するための最良の方法は何でしょうか?
たとえば、10秒ごとにチェックするようにスケジュールします。
どんな助けでも大歓迎です。
iphone - 処理が必要な場合にメインスレッドからバックグラウンドスレッドに通知する方法
私は画像処理を行い、結果の画像を表示するアプリに取り組んでいます。UIScrollViewを使用して、ユーザーがすべての画像をスクロールできるようにします。画像は標準のjpgまたはpngではないため、読み込みに時間がかかります。スレッドを使用して画像を読み込んでから、ビューを更新したいと思います。
今のところ、バックグラウンドスレッドでタイマーを使用して、ロードする必要のある画像があるかどうかを確認します。しかし、それはあまりうまく機能していません。メインスレッドにロードする必要のある画像やその他の提案がある場合に、バックグラウンドスレッドに通知する方法があるかどうかを知りたいですか?
前もって感謝します。
ios - 実行ループを続行させながら遅延させる適切な方法
一定時間遅延させながら、同じランループ上の他のものが実行を継続できるようにする必要があります。私はこれを行うために次のコードを使用しています:
これは、関数が目的の時間(1秒)を待たずにすぐに戻る場合があることを除いて、私が望んでいることを正確に実行しているようです。
誰かがこれを引き起こす可能性があるものを私に知らせてもらえますか?そして、実行ループの実行を許可しながら待機する適切な方法は何ですか?
注:sleep()と同様の方法で遅延させたいので、遅延後、以前と同じ実行ストリームに戻ります。
macos - Core Foundation メッセージ ポートを使用して実行ループ ソース間で通信する方法
2 つの実行ループ間の通信用のメッセージ ポートを作成しようとする次のコードがあります。1 つの実行ループは pthread の代わりに実行され、もう 1 つはメインの実行ループです。この機能は、さまざまな条件下で正常に機能しているように見えますが、いずれも望ましい条件ではありません。
たとえば、kCFRunLoopDefaultMode の代わりに NULL を渡すと機能しますが、ブロックされません。
sndData とMessagePortProc コールバックからの戻り値 (rerun NULL) の両方に kCFRunLoopDefaultMode と NULL データを渡すことも期待どおりに機能しますが、MessagePortProc コールバックからデータを送受信する必要があるため、メッセージ ポートを使用する必要があり ます。
kCFRunLoopDefaultMode が使用され、かつ MessagePortProc 戻り値または sndData パラメータのいずれかがNOT NULLである場合、 CFMessagePortSendRequest ブロックが返され、決して返されません。MessagePortProc は正常に呼び出され、呼び出された場所に制御を返すことはありません。エラーメッセージは出力されず、クラッシュも発生せず、ただそこに留まっています。
テストケースとして、送信データと受信データの両方に対して、以下に概説する小さなバイト配列から作成された単純な CFDataRef を使用しています。いずれかが、概説された動作を引き起こします。
ios - メイン実行ループがスリープするまでバックグラウンドスレッドをブロックするにはどうすればよいですか?
メインスレッドの実行ループがスリープ状態になるまで(メインスレッドは入力を待機している)、バックグラウンドスレッドをブロックしたいと思います。
私はこれを行うことでこれを行うことができると思います:
しかし、私はおそらくこれを行うためのより良い方法があると信じています。何かアドバイス?
ios - iOS でアニメーション スレッドを設定するには?
drawView
スレッドセーフで、ゲームアニメーションの短い期間の描画を行う機能があります。関数startAnimating
とstopAnimating
. バックグラウンド スレッドを通常の速度で呼び出す必要がありますdrawView
が、アニメーションが有効になっている間のみです。
では、スレッドを実行するためにstartAnimating
ビューを呼び出すつもりでした。performSelectorInBackground:withObject:
スレッド通信を実行して描画スレッドを初期化する方法について少し混乱しています。具体的には、表示リンクメッセージを受信するように実行ループを設定し、最後に終了する必要があることをスレッドに通知し、実行ループをきれいに終了しますstopAnimating
。メインスレッドから呼び出されます。drawView
が の後に呼び出されないようにしたいと思いstopAnimating
ます。また、描画操作の途中で描画スレッドが突然キャンセルされないようにしたいと考えています。この種の質問に対する非常に貧弱な回答をオンラインでたくさん見てきました。
ios - autorelease と runloop とスレッドの関係は?
自動解放について質問があります。コードは次のとおりです。
ドキュメントは、 @autoreleasepool{} の最後で、autorelease としてマークされたオブジェクトが解放メッセージを受け取ると述べています。しかし、UIApplicationMain は決して戻りません。つまり、フローが @autoreleasepool の最後に到達することはなく、autorelease としてマークされたオブジェクトは、アプリが終了するまで解放されません。オートリリースの意味はありません.....
私は、iOS システムがいくつかのスレッドを生成すると言う人に尋ねました (1 つのスレッド、1 つの実行ループ)。彼は、実行ループが自動解放プールを作成すると言いました。 . しかし、私たちがメインスレッドを使用するほとんどの状況. だから彼の言うことは私を説得しません.
autorelease を使用する適切な時期はいつですか。長い間混乱していました。
1 つの runloop が終了すると autorelease オブジェクトが解放されるという別のポイントが得られます (メインの runloop はアプリの全期間存在しますか??) ので、よくわかりません..
任意のポイントと関連ドキュメントをいただければ幸いです!!