問題タブ [grand-central-dispatch]

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 に答える
1051 参照

iphone - 非メインrunloopタスクをGCDに変換する

定期的に実行されるタスクがあり、元々はNSThreadとNSTimerを使用してメインの実行ループとは別の実行ループで実行するように設計されていました。

GCDを利用するためにこれを適応させる最良の方法は何ですか?

現在のコード:

置き換える以外にできることはありdetachNewThreadSelectorますdispatch_asyncか?

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

iphone - デリゲートと initWithContentsOfURL を使用した NSURLConnection: グランド セントラル ディスパッチを使用

インターネットから非常に多くの JSON データをダウンロードするアプリケーションを作成しています。私のアプリは、この JSON データを解析し、その後、取得したオブジェクトを自作のデリゲートに返す必要があります。

dispatch_asyncここで、NSURLConnection を使用するか、Grand Central DispatchとinitWithContentsOfURL:(ハングを防ぐために GCD を使用して)組み合わせて使用​​する方がよいかどうか疑問に思っていました。

Grand Central Dispatch を使用すると、実装がはるかに簡単になります。特に、一時的に使用されるデリゲートも NSMutableData も他のすべての変数も必要ないためです。しかし、もちろん、長所を持つものにはすべて短所があります。

initWithContentsOfURLGCD を使用したNSURLConnection の利点は何ですか?

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

iphone - しばらくしてUIAlertViewを表示する

しばらくしてから (アプリで何かを実行してから 5 分後など)、UIAlertView を表示しようとしています。アプリが閉じているかバックグラウンドであるかは、すでにユーザーに通知しています。しかし、アプリの実行中に UIAlertView を表示したいのです。

次のようにdispatch_asyncを試みましたが、アラートは永遠にポップしています:

また、スレッドは 30 ~ 60 分後に死ぬと読みました。60分以上経過したらアラートを表示できるようにしたいです。

0 投票する
8 に答える
50678 参照

cocoa - Grand Central Dispatch で dispatch_sync を使用する

dispatch_syncinの目的が何であるかを本当に明確なユースケースで説明できる人GCDはいますか? どこで、なぜこれを使用しなければならないのか理解できません。

ありがとう!

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

iphone - dispatch_group_asyncを使用すると、ブロックが次々に発生します

配列内のURLは次々に呼び出されます。nsoperationqueueのように、一度に呼び出すべきではありませんか?ここで私を助けてください、ありがとう

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

iphone - メソッドのブロックの受け渡し

さまざまなブロックをメソッドに渡したいのですが。その後、メソッドは渡されたブロックをdispatch_asyncのパラメーターとして使用します。

私のブロックは次のように宣言されています:

ブロックを受け入れるクラスメソッドは、次のように実装されます。

block' 'パラメーターを次のように型キャストしても大丈夫dispatch_block_tですか?

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

multithreading - CLバックグラウンド スレッドからのロケーション マネージャーの更新

以下を使用してローカリゼーション リクエストを開始していGrand Central Dispatchます。

私の Singleton クラス LocationManager Controller で静的メソッドを呼び出します。

startUpdates メソッドではCLLocationManager、 のプロパティLocationManagerControllerが初期化され、要求されstartUpdatingLocationます。

最後に、場所の更新が発生したときの方法:

私の問題は、locationManager が 3 つの場所の更新のみを送信し、停止するように要求していないにもかかわらず、更新の送信を停止することです。基本的に、while(![locationManagerController getterDone]) ループから抜け出すことはありません。

ところで、GCD を使用してこれを実装しようとする前は問題なく動作していたので、問題はマルチスレッドの実装に関係していると思います。

何か案が ?

編集

コンソールにエラーは表示されません。プログラムはそのまま実行されますが、while ループに陥ってしまい、最初の 3 回の場所の更新後に何も起こりません。

ありがとう !

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

cocoa - シートと長時間実行タスク

ユーザーがボタンをクリックした後、複雑な(つまり長い)タスクを実行する必要があります。ボタンはシートを開き、dispatch_asyncおよびその他のGrandCentralDispatchのものを使用して長時間実行操作が開始されます。

私はコードを書きましたが、それは正常に機能しますが、すべてを正しく実行したかどうか、または(無知のために)潜在的な問題を無視したかどうかを理解するための助けが必要です。

ユーザーがボタンをクリックしてシートを開くと、ブロックには長いタスクが含まれます(この例では、for(;;)ループのみが実行されます。ブロックには、タスクの完了時にシートを閉じるロジックも含まれています。

パネルには、ユーザーがタスクを完了する前に停止できるようにする停止ボタンが含まれています

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

iphone - __blocks と dispatch_sync 内のオブジェクトの割り当て

dispatch_sync ブロック中に内容が設定された配列を返したいと思います。

私がよく目にするコードは次のようなものです。

配列全体のコピーではなく、1 つずつ追加したい場合、戻り値の「autorelease」をスキップできますか?

[NSMutableArray array] の割り当ては、このメソッドのスタックが完了した後に結果を継続して使用するために、dispatch_sync ブロック内で安全ですか?

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

ios - NSOperationQueue と同時操作

クラスリファレンスが言ったようにNSOperationQueue: iOS では、操作キューは操作の実行に使用されませんGrand Central Dispatch。非同時操作用に別のスレッドを作成し、現在のスレッドから同時操作を開始します。

しかし、iOS 4.2.1 では、queue は常に並行操作または非並行操作のスレッドを作成することがわかりました。また、 isConcurrent のブレークポイントが壊れることはないため、キューは同時実行または非同時実行をまったく気にしないと思います。だから私は参照が間違っていたと思う...