問題タブ [nsrunloop]
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.
ios - IOS でメイン スレッドがブロックされている場合、スレッドで UIAlertView を閉じる
接続を待っているアプリケーションがあります。アプリケーションが待機している間、プログラムによって、またはユーザーが AlertView のキャンセル ボタンをクリックすることによって、AlertView をユーザーに表示する必要があります。
メインスレッドはクライアントが接続するのを待っています。別のスレッドのように、ダイアログの時間を更新している AlertView を作成して表示しています。スレッドには、AlertView のテキストを更新する has NSRunLoop があります。
AlertView がタッチ イベントを受信せず、プログラムで却下されないことを除いて、すべて正常に動作します。ここで私が間違っているかもしれないことに誰かが光を当てることができますか.
これがサンプルコードです。
objective-c - シートウィンドウのNSTimerが起動しない
パネル内に毎秒起動しようとしているタイマーがありますが、起動できないようです。私は次のようにパネルを作成しています:
次に、私の targetController には次のものがあります。
私の理解では、タイマーを に追加することでこれを正しく行っていますがNSModalPanelRunLoopMode
、そうしても updateDisplay: セレクターは起動しません。
ここで私が間違っていることについて何か考えがある人はいますか?
注:私も試しNSDefaultRunLoopMode
ましたが、違いはありませんでした。タイマーはまだ起動されていません。
編集:私の全体的な目標は次のとおりです-
私のパネルには、(複数のスレッドから) 一度に多くの項目を追加できるテーブル ビューがあります。そのため、アイテムを一時配列に追加し、タイマーが起動すると、一時配列からメイン配列にアイテムを追加し、テーブルをリロードします。以下は、これを行うコードのサンプルです。
そして、タイマーが更新されたときに起動するメソッド:
残念ながら、タイマーが起動しないと、テーブルにエントリがまったくありません。
以下は、まさに私がやろうとしていることのスクリーンショットです (エントリはメイン配列に直接追加されています)。
objective-c - NSOperation で NSThread スリープを使用する
いくつかのコードを操作していると、s 内で初めて実行ループに出くわしますNSOperation
。
s はデータのダウンロードでビジーです。ビジー状態の間、 s とスレッドのスリープNSOperation
という形で、ダウンロードが完了するのを待つコードがあります。NSRunLoop
特にこのコードは私にとって興味深いものです:
実行ループについて読みましたがrunMode:beforeDate:
、入力ソースまたはタイムアウトを待ちます。私は100%ではありませんが、入力ソースとしてカウントされます.
これを最初に実行すると、常に NO が返され、sleepForTimeInterval:
. これは悪いですか?
特定のユーティリティ クラスでは、sleepForTimeInterval:
スレッドごとに 1 回ずつ多くのヒットが発生し、パフォーマンスが大幅に低下します。
これに対するより良い解決策、またはアドバイスはありますか?
objective-c - iOSのdispatch_asyncおよびNSURLConnectionデリゲート関数が呼び出されていない
読みやすくするためにこの投稿を編集したと思います。
dispatch_asyncブロックで集中的な文字列操作を実行し終えたら、NSUrlConnectionを呼び出す必要があります。
私が呼び出すURLには.htaccess認証が含まれているため、同期接続を使用できません。
ただし、NSURLConnectionデリゲートメソッドは呼び出されていません。ブラウザで約5秒後にURLが読み込まれることはわかっていますが、認証なしの単純なURLでコードをテストしましたが、違いはありません。
呼び出されているデリゲートメソッドを停止するのは何ですか?
この関数はいくつかの文字列操作を行い、完了するまでに時間がかかります。
そして、これは上のブロックの終わりに向かって呼び出されたものです
更新:別の同様の質問に対する回答として受け入れられたので、これも試しましたが、機能しませんでした:
この質問に基づく:グローバルディスパッチキューを使用しているときに、NSURLConnectionデリゲートメソッドが呼び出されないのはなぜですか?
objective-c - iPhoneのFTP経由でバックグラウンドでファイルをアップロードする
アプリ内でFTP接続を確立しようとしています。FTPサーバーに複数のファイルをアップロードしたいのですが、すべてのファイルが1つのディレクトリにあります。だから最初に私はリモートディレクトリを作成したいと思います。
このコードは、次の呼び出しを使用してバックグラウンドスレッドで実行された場合は機能しません。
私の推測では、(background-threads)runloopが実行されていませんか?メインスレッド内でメッセージを送信すると、アップロードは正常に機能します。
メインスレッドのrunloopが稼働しているため。
ただし、かなり大きなファイルがアップロードされます。そのため、そのワークロードをバックグラウンドスレッドに配置したいと思います。しかし、アップロード全体がバックグラウンドスレッドで行われるように、NSRunLoopをどこでどのように設定すればよいですか?NSRunLoopsに関するAppleのドキュメント(特に、この場合のように、タイマー/入力ソースを使用せずにそれらを起動する方法)は私を助けませんでした。
iphone - [NSRunLoop runUntilDate:] を GCD コードに書き直す方法は?
好奇心のために、次のコードを書き直そうとしています
Grand Central Dispatch を使用してコードに挿入します。
私はdispatch_source_t、dispatch_semaphore_t、およびdispatch_afterを使用してみましたが、うまく機能しません:(そして私はあなたの助けが必要です!
SVProgressHUD のメソッドをブロックでラップしたくないことに注意してください。
objective-c - NSTimerを無効にした後で「検証」するにはどうすればよいですか?
つまり、基本的に、このタイマーはキーイベントを受信したときに繰り返され、ユーザーがキーを離したときに無効になります。addTimer:forMode:
ただし、 NSRunLoopでを呼び出しても、タイマーを「検証」することはできません。なぜこれが起こっているのか、そしてどうすればこれを修正できるのか誰かが知っていますか?ありがとう。
objective-c - NSRunLoopは、すべてのイベントが終了するまで実行するだけです
NSRunLoopとCFRunLoopにはメソッドがあり、特定の時間に実行するにはCFRunLoopInModeとNSRunLoop --runUntillDateT
これらのメソッドは、まで実行する時間を指定します。
しかし、runLoop内のすべてのメッセージを処理し、それが完了してアイドル状態になったら終了したかったのです。一部のrunLoopソースは、処理に無期限の時間がかかる可能性があるためです。ですから、時間については言えません。
ios - HttpConnection、UITableView、RunLoops、およびディスクからのロード
テーブル ビューの大きなグリッドに画像を読み込んでいます。それらはネットから来ていますが、ダウンロードされるとディスクにキャッシュされます。
私はこれを使用します:
まだスクロールしている間にそれらが表示されるようにします。正常に動作します。
ただし、それらを再訪してディスクからロードしている場合、使用する同じ scheduleInRunLoop メソッドがありません...そうかもしれませんが、それがどこにあるのかわかりません。
誰かアイデアはありますか?
ありがとう