問題タブ [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.

0 投票する
1 に答える
546 参照

objective-c - HTTP サーバーは Cocoa アプリケーションでは機能しますが、テスト ケースでは機能しません -- ループの問題を実行しますか?

このSimpleHTTPServer exampleに GHUnit テスト ケースを追加しようとしています。この例には、私にとっては問題なく動作する Cocoa アプリケーションが含まれています。しかし、テスト ケースで動作を再現することはできません。

テストクラスは次のとおりです。

NSURLRequest を介してリクエストを送信しようとしましたが、(実行中にsleep) Web ブラウザを介して送信することも試みました。デリゲート メソッド-processURL-stopProcessingが呼び出されることはありません。問題は[fileHandle acceptConnectionInBackgroundAndNotify]、SimpleHTTPServer で NSFileHandleConnectionAcceptedNotifications-initWithTCPPort:delegate:が NSNotificationCenter に到達しないように思われるため、実行ループに関連する問題が疑われます。

問題は NSNotificationCenter ではなく NSFileHandle にあるよう[nc postNotificationName:NSFileHandleConnectionAcceptedNotification object:nil]ですinitWithTCPPort:delegate:

0 投票する
1 に答える
2920 参照

objective-c - iOS で複数の NSTimer を使用する - 1 つのタイマーのみが起動する

問題について助けが必要です。

目標
ビューを読み込んだ後、NSTimers を使用していくつかのずらしたアニメーション イベントを発生させる iOS ブック アプリをまとめています。これを行うのに役立つMethodCallerWithTimerクラスを作成しました(コードは下部にあります)。

これまでの解決方法MethodCallerWithTimer
クラス を使用する場合、objectOwningMethod を UIViewController サブクラス オブジェクト (本のページ) として割り当て、そのメソッドをそのクラスのインスタンス メソッドとして割り当てます。これは私が割り当てたメソッドの例です - 画面上のいくつかのアートワークをオンにするだけです:

私の問題
複数のMethodCallerWithTimerインスタンスを作成し、ビューをロードしてそれらをすべて開始すると、最初のイベントしか発生しません。他のどのタイマーも、ターゲット メソッドを呼び出しません。NSRunLoop に何を求めているのか、または同様のことを理解していないと思われます。

何かご意見は?

ここに私のMethodCallerWithTimerクラスがあります:

そして実装:

0 投票する
2 に答える
7016 参照

concurrency - 非同期 NSURLConnection、同時 NSOperation、いつ NSRunLoop を使用しますか?

セカンダリ スレッド (ターゲットは iOS4) で NSURLConnection 非同期を実行しようとしています。

1) iOS4 NSOperationQueue addOperation では、 Technical Q&A QA1712に基づいて、GCD を使用しているため、新しいスレッドで操作を開始しますが、私のテスト (シミュレーターと iPad) は、start() が常にメイン スレッドで呼び出されることを示しています。アイデア、ここでチェックが必要ですか:メインスレッドで新しいものを生成する場合?

2) addOperation() によってセカンダリ スレッドで start が実際に呼び出された場合、現在の NSRunLoop でスケジュールすることにより、非同期 NSURLConnection を開始できます。

ここの LinkedImageFetcher の例のように、次のように完了するまでループする必要はありません。

3) カスタム NSOperation start() がメイン スレッドで呼び出され、2) が正しいと仮定すると、start() で新しいスレッドを生成して、次のようにカスタム main() メソッドを呼び出します。

私の main() では、現在のスレッド実行ループを実行する必要があります。

これは、並行 NSOperation で NSURLConnection を実行できた唯一のインスタンスですが、技術ノートの状態としてスレッドが GCD によって提供された場合、RunLoop を実行する必要があるかどうかはわかりません。ロジックに従うことができますか? 2)またはスレッドの実行ループを実行する必要がありますか?GCD が提供するスレッドをテストするにはどうすればよいですか?

説明してくれてありがとう

0 投票する
1 に答える
419 参照

iphone - コマンドライン プログラムから、iPhone から加速度計データを取得しますか?

以下の要点をご覧ください。

https://gist.github.com/969112

基本的に、私は をセットアップしてUIAccelerometerDelegate、コマンドライン iPhone アプリケーションからデータを受信させようとしています (つまり、ジェイルブレイクされており、電話に ssh され、iPhone 自体で上記のコードをコンパイルしています)。

上記のコードは機能しません...アプリケーションが実行ループにあり、UIAccelerometerデリゲートでアクティブであっても、コールバックは呼び出されません...

他に何が必要なのか、ちょっと途方に暮れています。私は単に、加速度計のデータを取得する最も単純な「Hello World」の例を取得しようとしていました (UI のすべての肥大化や完全なアプリの実行なしで)...

アイデアはありますか?前もって感謝します!

0 投票する
3 に答える
426 参照

iphone - この場合、NSTimer で実行ループを使用する必要がありますか?

アプリを sleep() したくありませんが、タイマーがアクションを完了するまで待機させたいです (基本的に、1 秒に 1 つずつ、4 つの UILabels を更新します)。

タイマーが完了した後、メインループで起動したいコードがいくつかあります-タイマーが完了するまで待機したいです。現時点では、メイン ループがタイマーを開始し、次のコード ブロックに直接進みます (タイマーがバックグラウンドで刻々と過ぎていきます)。しかし実際には、タイマーが 4 つの UILabels の更新を完了してから、メイン プログラムが次のコード ブロックを起動するようにしたいと考えています。

私はグーグルでYouTubeでいくつかの悪いチュートリアルを見ていますが、実行ループを使用する必要があると思います. これは正しいでしょうか?

0 投票する
1 に答える
870 参照

iphone - 別のスレッドでの NSTimer の不適切な動作

別のスレッドで NSTimer をスケジュールしようとしていますが、これが私がやっている方法です。

timerFireMethod はスピナーを回転させ、ボタンが押されると (停止ボタン)、タイマーを無効にしてこのメ​​ソッドのスレッドを終了します。スピンボタンが押された場合、ここでポーリングを行います。

問題は、私の timerFireMethod が初めて適切に呼び出されることです。スピナーが初めて回転します。しかし、スピナーを停止して再度開始すると、スピナーが回転しません。ログには、「startSpinner」メソッドが 2 回呼び出されたが、「timerFireMethod」メソッドが呼び出されなかったことが示されています。

さらに悪いことに、スピナーはシミュレーターで 5 ~ 6 回、2g デバイスで 1 回、最新の iPod で 4 ~ 5 回動作します。そのランダム。

これは基本的にどのように機能しますか?何が問題なのですか?

0 投票する
1 に答える
1205 参照

iphone - AVPlayerStatus と AVPlayerItemStatus の比較

問題は、player.currentItem.status が を返すAVPlayerStatusReadyToPlay前に、player.status が完全な 2 秒を返すAVPlayerItemStatusReadyToPlayことです。なぜこれが起こっているのかについて、誰かに役立つ説明はありますか?
これは、何が起こっているかの基本的な考え方を示すための単なるサンプル コードです。タイプミスなどがある場合は無視してください。

0 投票する
2 に答える
15531 参照

objective-c - NSThread を有効に保ち、NSRunLoop を実行します。

だから私は、後で呼び出すことで使用できるようにしたい新しい NSThread を開始していますperformSelector:onThread:...。私が理解している方法から、そのメソッドはその呼び出しをそのスレッドの実行ループに追加するため、次の反復でこれらの呼び出しをすべてポップし、呼び出すものがなくなるまで呼び出します。したがって、この種の機能が必要です。つまり、すぐに呼び出せる作業の準備が整ったアイドル スレッドです。私の現在のコードは次のようになります。

しかし、スレッドは維持されず、performSelector:onThread は何もしません。これを正しい方法で行うにはどうすればよいですか?

0 投票する
3 に答える
4316 参照

iphone - NSTimer が無効化された後、バックグラウンド スレッド NSRunloop の実行が終了しません。なんで?

NSTimer を作成し、それをバックグラウンド スレッドの実行ループに追加しています。私のコードは、この回答のバックグラウンド スレッドの例のようなものです: iPhone-SDK:Call a function in the background?

タイマーを作成し、gdb I から runloop にアタッチすると、次のpo runLoopように出力されます。

これは、1 つのタイマーが runloop にアタッチされていることを示しています。後でタイマーを無効にした後、NSRunloop 実行メソッドは終了しませんが、デバッガーを一時停止して gdb からpo runLoop再び次のように表示されます。

これで、"timers" エントリのオブジェクトは 0 になりました。しかし、スレッドは実行され続けます。画面を離れて戻ってくることがよくあるため、バックグラウンド スレッドが蓄積され、リソースが多すぎると最終的にアプリが強制終了されます。無効化された後、タイマーは起動しませんが、バックグラウンド スレッドは残ります。

タイマーをメイン スレッドに戻すか、NSThread sleepForTimeInterval を使用して独自の単純なタイマー スレッドを作成できることはわかっていますが、GUI の更新用にメイン スレッドを維持し、可能であれば NSTimer を使用したいと考えています。

0 投票する
1 に答える
1882 参照

iphone - UIScrollView内のUIImageViewにピンチ/ズーム効果を追加する

私は非常に基本的な画面共有iPhoneアプリを持っていますが、UIImageView内部を使用してピンチ/ズーム効果をアプリに正常に追加しましたUIScrollView

UIImageView、PCから定期的に画面コンテンツを受信します。すべて正常に機能しますが、スクロール/ピンチ/ズームすると最初は機能しますが、その後停止し、サーバーが画面コンテンツを送信していても、画像ビューのコンテンツを更新するデリゲートメソッドの起動が停止します。アプリ全体がフリーズしているようですが、エラーメッセージ/例外などはありません。誰か助けてもらえますか?