問題タブ [dispatch-async]
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 - Objective C - 単体テストのdispatch_asyncブロック?
この質問に対する解決策を考え出す他の投稿を読みました。ただし、彼らのソリューションでは、アプリケーションをテストできるようにするために、ハック コードをアプリケーションに追加する必要があります。私にとって、クリーンなコードは単体テストよりも重要です。
アプリで dispatch_async を定期的に使用していますが、単体テストに問題があります。問題は、メイン キューで非同期に実行されているため、テストが既に完了した後にブロックが実行されることです。ブロックが実行されるまで何らかの方法で待機してから、テストを続行する方法はありますか。
単体テストのためだけにブロックに完了を渡したくありません
objective-c - 非同期データのロードとUITableViewのリロードの間隔
データのgetterメソッドで配列にデータを非同期的にロードしています。
まず第一に、それは空の配列を生成するので、当然私のテーブルは0行をロードします。
データの読み込みが完了したらreloadData
、テーブルを更新するために呼び出しますが、ダウンロードされるデータと表示されるデータの間に最大6秒のギャップがあるようUITableView
です。
誰かがこれが起こるかもしれない理由を知っていますか?
dispatch_async
優先度の高い方法を使用しています。
データのロードと挿入のプロセスの各ポイントをログに記録しましたが、これが示されています。
また、データが読み込まれているときにテーブルを上下にスクロールし続けると、挿入の間にこのギャップがあるのではなく、テーブルにデータが表示されます。
コード:
iphone - rejectViewControllerAnimated を呼び出すときの exc_bad_access
上にスライドするViewControllerがあります。「保存」をクリックすると、サーバーにリクエストが送信されます。リクエストが完了すると、ViewController を閉じます。NSURLConnection を非同期とブロック (https://github.com/rickerbh/NSURLConnection-Blocks) を使用するように切り替えました。ViewController を閉じると、「Thread 2: Program received signal: EXC_BAD_ACCESS」がスローされるようになりました。それが問題なら、私はARCを使用しています。
ここにログがあります
これに関するヘルプを探すのに 2 時間費やしました。何が助けになるか知っている人がいたら、声をかけてください!:)
ios - iOS 5 NSURLConnection およびスタンバイ モードでのダウンロードのブロック
サーバーからコンテンツをダウンロードするために使用NSURLConnection
しています (iOS 5.0 で iPad アプリケーションを使用しています)。NSURLConnection
iPadがスタンバイ状態になってもダウンロードを続けてほしい。出来ますか?
これは私のコードです:
ありがとう!
ios - dispatch_async() が「黙って」失敗する -- なぜ?
全て:
私はdispatch_async()
問題に取り組んでいます。私の目標は、TableViewController (TopStoriesTVC) がいくつかの RSS フィードを表示することです。XML のフェッチと解析は、Reporter というクラスに組み込まれています。
TopSToriesTVC は Reporter に fetchNewsFrom: を指示します。それが完了し、xml の解析が完了すると、Reporter は TopStoriesTVC の fileStories:fromReporter: メソッドを呼び出します。
TopStoriesTVC ===================================> レポーター
これは、シングルスレッド環境でうまく機能します。しかし、いくつかの rss ストリームを取得したいので、代わりに:
// TopStoriesTVC では ...
// レポーターで...
これは完全に機能します。次を使用してそれらをラップしようとしましたdispatch_async()
:
と
それらはまったく機能しません。fileStories:fromReporter: には[self.tableView reloadData];
ステートメントが含まれているため、get_main_queue() を使用しています。これはメイン スレッドで実行する必要があることを理解しています。
「まったく機能しない」と言うと、具体的には、a)コンソールにエラーメッセージが表示されない、b)tableViewに何も表示されない、c)NSXMLParserDelegate
メソッドが呼び出されていない、d)デバッグステートメントを設定するだけアセンブリ言語の束に私を導きます。
ここで何が問題なのか誰にもわかりますか?または何か提案はありますか?本当にありがたいです。
performance - UIView が更新されず、中間結果が表示されないのはなぜですか?
私のアプリでは、多数の(同一のPNG)ファイルを積み重ねて、ユーザーに画像結果と進行状況バーを表示したいと考えています。パフォーマンスを向上させるために、次のコードを思いつきましたが、for ループが終了したときにのみ最終結果が表示されます。大量の画像の場合、これは私が望むものではなく、中間結果を見たいと思っています。次のコードにはおそらくエラーが含まれていますが、まだ見つかりません。
また、使用されるメモリの量を最小限に抑え、全体的なパフォーマンスを最大化したいので、UIGraphicsBeginImageContext/UIGraphicsEndImageContext ペアを配置するのに最適な場所は何かという問題にも苦労しています。
ios - タイプアヘッドの NSUrlConnection 非同期呼び出し
アプリで、リモート レスト サービスにヒットするタイプ アヘッドを作成しています。現在の問題は、接続に NSUrl を使用していることです。これは同期であり、json オブジェクトをループする量が多いため、解析に時間がかかります。そのため、検索中に UI がフリーズします。
したがって、私はやろうと決めました:
少し良くなったようですが、ほとんどの処理がメイン キューに関連付けられた完了ハンドラで行われるため、まだハングします。
それで、私は自分の NSOperationsQueue を作成するか、dispatch_asynch を使用してみました:
そしてそれはうまくいきます。唯一の問題は、uitableview がデータを更新するのに 10 秒ほどかかることです。中断することなく入力できるようになりましたが、uitableview の更新に大きな遅延があります。
私はこれに近づいていますか?どんな助けでも大歓迎です。
ありがとう!
objective-c - コード実行後のカスタム セグエ アニメーションの遅延。(目的C)
dispatch_async
システムでユーザーを認証するように、いくつかの方法がリンクされています。
次の非同期メソッドは、それぞれに完了ハンドラーがあるため、前のメソッドが終了したときにのみ発生します。
最後の 1 つが終了したら、2 つのuiview
アニメーション ブロックでカスタム セグエを実行します。
ただし、これらのそれぞれが実際に実行されたときにログに記録すると、ログと実際に発生しているアニメーションの間にかなりのギャップがあり、最終的にビューがアニメーション化し、完了ブロックが呼び出されます。
ここにコードを追加することがどれほど役立つかはよくわかりませんが、テストしたところ、非同期メソッドである必要があります。コメントアウトしてアニメーションを返すだけYES
で、ログと同時に遅延なくアニメーションが発生するためです。
なぜこれが起こるのか誰にも分かりますか?
EDIT *(コード付き)
電子メール、ユーザー、ユーザー ID に使用される典型的な「存在チェック」。
ユーザーの存在を確認する
セグエ
ログインVC
ios - dispatch_async のサブビューは、長い遅延の後に表示されます
私はdispatch_asyncを使用してxmlドキュメントの解析をバックグラウンドに置き、情報を配列に入れました.forサイクルを使用して、すべての要素のコンテンツをUILabelに割り当てます(今のところ)、問題は出力コンソールすべての要素の正しいコンテンツを確認できますが、uilabel は長い遅延の後、最後にのみ追加されます。
コード:
ご覧のとおり、私は performSelectorOnMainThread を使用しましたが、ラベルは一度に表示されませんが、ブロックの終了後 10 秒または 15 秒後にのみ正しく表示されます。
アイデア?
前もって感謝します
わかりました 編集 1
Shimanski Artem のアドバイスのおかげで、次のようになりました。
}
私は貴重なデータでいっぱいの配列を準備したcaricaItemメソッドで、uilabelsの作成をディスパッチから外しましたが、同じ遅延...そしてcaricaItemでUITableViewを使用する場合も同じです...
どのように進めるのが正しいですか?
ありがとう
objective-c - NSRunLooprunModeは常にdispatch_asyncを処理するとは限りません
私はキューとそれらがどのように機能するかをよりよく理解しようとしています。このスニペットは、彼らの行動をテストするためのものです:
予想されるように、ログにこれが生成されます。
奇妙なことに、このコードが、たとえば、UIViewControllerの-(void)viewDidAppear:(BOOL)animatedから呼び出されると、動作が変化します。具体的には、次のログでデッドロックします。
私の質問は、NSRunLoop runModeがこの状況でdispatch_asyncを介して送信されたブロックを処理しないのに、他の状況では処理するのはなぜですか?