タグ付けされた質問 「nsoperation」

8
NSOperation vs Grand Central Dispatch
iOS用の並行プログラミングについて学んでいます。これまで、NSOperation/NSOperationQueueとについて読みましたGCD。over を使用する理由とその逆の理由は何ですか?NSOperationQueueGCD 両方のような音GCDやNSOperationQueue抽象化を明示的に作成するNSThreadsユーザから。ただし、2つのアプローチの関係は明確ではないため、フィードバックをお待ちしています。

8
非同期ネットワークリクエストを含むSwift forループの実行が完了するまで待機します
for inループで一連のネットワークリクエストをfirebaseに送信し、メソッドの実行が完了したら、データを新しいビューコントローラーに渡します。これが私のコードです: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] = snapshot.value }) } // Segue to new view controller here and pass datesArray once it is complete 私にはいくつかの懸念があります。最初に、forループが終了してすべてのネットワーク要求が完了するまで、どのように待つのですか?observeSingleEventOfType関数は変更できません。FirebaseSDKの一部です。また、forループのさまざまな反復からdatesArrayにアクセスしようとすることで、ある種の競合状態を作成しますか(意味があると思います)。私はGCDとNSOperationについて読んでいましたが、これは私が作成した最初のアプリであるため、少し迷っています。 注:Locations配列は、firebaseでアクセスする必要があるキーを含む配列です。また、ネットワーク要求が非同期で発生することも重要です。すべての非同期リクエストが完了するまで待ってから、datesArrayを次のビューコントローラーに渡します。

15
NSOperationQueueがすべてのタスクを完了したときに通知を受け取ります
NSOperationQueue持っていますがwaitUntilAllOperationsAreFinished、私は同期的にそれを待ちたくありません。キューが終了したときにUIの進行状況インジケーターを非表示にしたいだけです。 これを達成するための最良の方法は何ですか? NSOperationどのsが最後になるのかわからないため[queue operations]、通知を受信して​​もまだ空ではない(またはさらに悪いことに、再入力されている)ため、から通知を送信できません。

6
NSOperationおよびNSOperationQueue作業スレッドとメインスレッド
アプリで一連のダウンロードおよびデータベース書き込み操作を実行する必要があります。私が使用していますNSOperationとNSOperationQueue同じため。 これはアプリケーションシナリオです。 場所からすべての郵便番号を取得します。 郵便番号ごとに、すべての家を取得します。 家ごとに住民の詳細を取得します すでに述べたように、NSOperationタスクごとにを定義しました。最初のケース(タスク1)では、すべての郵便番号を取得するようにサーバーにリクエストを送信しています。内の代理人NSOperationがデータを受け取ります。次に、このデータはデータベースに書き込まれます。データベース操作は別のクラスで定義されています。からNSOperationクラス、データベースクラスで定義された書き込み関数を呼び出しています。 私の質問は、データベースの書き込み操作がメインスレッドで発生するのか、バックグラウンドスレッドで発生するのかということです。内で呼び出してNSOperationいたので、 とは別のスレッド(MainThreadではない)で実行されることを期待していましたNSOperation。対処しながら、誰かがこのシナリオを説明していただけますNSOperationとNSOperationQueue。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.