問題タブ [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.
iphone - 非メインrunloopタスクをGCDに変換する
定期的に実行されるタスクがあり、元々はNSThreadとNSTimerを使用してメインの実行ループとは別の実行ループで実行するように設計されていました。
GCDを利用するためにこれを適応させる最良の方法は何ですか?
現在のコード:
置き換える以外にできることはありdetachNewThreadSelector
ますdispatch_async
か?
iphone - デリゲートと initWithContentsOfURL を使用した NSURLConnection: グランド セントラル ディスパッチを使用
インターネットから非常に多くの JSON データをダウンロードするアプリケーションを作成しています。私のアプリは、この JSON データを解析し、その後、取得したオブジェクトを自作のデリゲートに返す必要があります。
dispatch_async
ここで、NSURLConnection を使用するか、Grand Central DispatchとinitWithContentsOfURL:
(ハングを防ぐために GCD を使用して)組み合わせて使用する方がよいかどうか疑問に思っていました。
Grand Central Dispatch を使用すると、実装がはるかに簡単になります。特に、一時的に使用されるデリゲートも NSMutableData も他のすべての変数も必要ないためです。しかし、もちろん、長所を持つものにはすべて短所があります。
initWithContentsOfURL
GCD を使用したNSURLConnection の利点は何ですか?
iphone - しばらくしてUIAlertViewを表示する
しばらくしてから (アプリで何かを実行してから 5 分後など)、UIAlertView を表示しようとしています。アプリが閉じているかバックグラウンドであるかは、すでにユーザーに通知しています。しかし、アプリの実行中に UIAlertView を表示したいのです。
次のようにdispatch_asyncを試みましたが、アラートは永遠にポップしています:
また、スレッドは 30 ~ 60 分後に死ぬと読みました。60分以上経過したらアラートを表示できるようにしたいです。
cocoa - Grand Central Dispatch で dispatch_sync を使用する
dispatch_sync
inの目的が何であるかを本当に明確なユースケースで説明できる人GCD
はいますか? どこで、なぜこれを使用しなければならないのか理解できません。
ありがとう!
iphone - dispatch_group_asyncを使用すると、ブロックが次々に発生します
配列内のURLは次々に呼び出されます。nsoperationqueueのように、一度に呼び出すべきではありませんか?ここで私を助けてください、ありがとう
iphone - メソッドのブロックの受け渡し
さまざまなブロックをメソッドに渡したいのですが。その後、メソッドは渡されたブロックをdispatch_asyncのパラメーターとして使用します。
私のブロックは次のように宣言されています:
ブロックを受け入れるクラスメソッドは、次のように実装されます。
block
' 'パラメーターを次のように型キャストしても大丈夫dispatch_block_t
ですか?
multithreading - CLバックグラウンド スレッドからのロケーション マネージャーの更新
以下を使用してローカリゼーション リクエストを開始していGrand Central Dispatch
ます。
私の Singleton クラス LocationManager Controller で静的メソッドを呼び出します。
startUpdates メソッドではCLLocationManager
、 のプロパティLocationManagerController
が初期化され、要求されstartUpdatingLocation
ます。
最後に、場所の更新が発生したときの方法:
私の問題は、locationManager が 3 つの場所の更新のみを送信し、停止するように要求していないにもかかわらず、更新の送信を停止することです。基本的に、while(![locationManagerController getterDone]) ループから抜け出すことはありません。
ところで、GCD を使用してこれを実装しようとする前は問題なく動作していたので、問題はマルチスレッドの実装に関係していると思います。
何か案が ?
編集
コンソールにエラーは表示されません。プログラムはそのまま実行されますが、while ループに陥ってしまい、最初の 3 回の場所の更新後に何も起こりません。
ありがとう !
cocoa - シートと長時間実行タスク
ユーザーがボタンをクリックした後、複雑な(つまり長い)タスクを実行する必要があります。ボタンはシートを開き、dispatch_asyncおよびその他のGrandCentralDispatchのものを使用して長時間実行操作が開始されます。
私はコードを書きましたが、それは正常に機能しますが、すべてを正しく実行したかどうか、または(無知のために)潜在的な問題を無視したかどうかを理解するための助けが必要です。
ユーザーがボタンをクリックしてシートを開くと、ブロックには長いタスクが含まれます(この例では、for(;;)ループのみが実行されます。ブロックには、タスクの完了時にシートを閉じるロジックも含まれています。
パネルには、ユーザーがタスクを完了する前に停止できるようにする停止ボタンが含まれています
iphone - __blocks と dispatch_sync 内のオブジェクトの割り当て
dispatch_sync ブロック中に内容が設定された配列を返したいと思います。
私がよく目にするコードは次のようなものです。
配列全体のコピーではなく、1 つずつ追加したい場合、戻り値の「autorelease」をスキップできますか?
[NSMutableArray array] の割り当ては、このメソッドのスタックが完了した後に結果を継続して使用するために、dispatch_sync ブロック内で安全ですか?
ios - NSOperationQueue と同時操作
クラスリファレンスが言ったようにNSOperationQueue
: iOS では、操作キューは操作の実行に使用されませんGrand Central Dispatch
。非同時操作用に別のスレッドを作成し、現在のスレッドから同時操作を開始します。
しかし、iOS 4.2.1 では、queue は常に並行操作または非並行操作のスレッドを作成することがわかりました。また、 isConcurrent のブレークポイントが壊れることはないため、キューは同時実行または非同時実行をまったく気にしないと思います。だから私は参照が間違っていたと思う...