問題タブ [nsoperation]
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 - 別のスレッドで何をしますか?
だから私はマルチスレッドとNSOperationについていくつか読んだことがあり、それを使ってアプリを改善する方法を考えています。Instrumentsを使用して、アプリで速度の向上を確実に使用できる場所をいくつか特定しました。私の質問は、これらの種類のものはNSOperationを使用する別のスレッドに適していますか?
ビューの描画:描画に少し時間がかかる、かなり複雑なビューがあります。それが描かれるとき、私はいくらかの遅れを経験します。
オーディオの割り当てと再生:私はAVAudioPlayer
いくつかのバックグラウンドミュージックを再生するために使用しています。私がそれを割り当てるとき、再びいくらかの遅れ。
計算:私はまた、いくつかの計算を実行し、多くの整数といくつかの比較を行っています。
私は自分のアプリで可能な限り最高のパフォーマンスを目指していますが、どうしますか?
objective-c - NSOperationのベストプラクティス、キャンセルへの対応
NSOperationサブクラスでは、長いループの先頭で、またはサブクラスのメソッドの長いメソッド(Core Data Fetches、配列の並べ替えなど)の前にキャンセルをチェックしますmain
。以下の例を参照してください。
プールを空にし、できるだけ早くメソッドを終了する以外に、他にすべきことはありますか?
iphone - iphone OS での NSOperationQueue と NSOperation の使用に関する問題
私はタスクを実行するため
にNSOperation を使用しています: NSURLConnection でいくつかのファイルをダウンロードしてから、多くの CPU とメモリ
を消費するファイルをマージします 新しい/バックグラウンド スレッドでタスクを実行する必要があります。ファイルをマージすると、メインスレッドがブロックされます(UIがしばらく応答しません)、新しい/バックグラウンドスレッドで実行されていないよう
です。どうすれば期待どおりに動作しますか?
iphone - メモリ管理によるクラッシュの問題 (Core Data を使用)
コアデータを使用しています。そこから、10000以上のデータを取得しています
NSOperation を使用して、UITableView に膨大なデータを表示しています。
しかし、XCode Instrumentsでわかるように、メモリ使用量が増え続けています
それが理由です。クラッシュ アクティビティはシミュレータではなくデバイスにあります。
これについてコメントしたい人はいますか?
objective-c - コアデータ:バックグラウンドコンテキストに追加された子のマージはファンキーです
バックグラウンド
マルチスレッドCoreDataアプリケーション
NSTreeController
とNSOutlineView
バインディング付きバックグラウンドコンテキストでNSOperationに子オブジェクトを作成します
を使用してメインコンテキストにマージします
mergeChangesFromContextDidSaveNotification
問題
20個の子の作成操作をキューに入れると、マージが完了すると、アウトラインビューに約10〜15個の子オブジェクトしか表示されません。
最大同時操作を1に設定すると、完全に機能し、20人の子が表示されます。
質問
私がやろうとしていることは不可能ですか?コアデータがマージを正常に実行するのにどのように苦労するかがわかります。または、私のコードに問題がありますか?
コード
JGGroupController
JGAddChildrenObjectOperation-NSOperationサブクラス
multithreading - CoreAudio とスレッド、方法は?
AU コールバック (C 言語) 用に別のスレッドを設定できますか? どのように ?もしそうなら、どのスレッドメソッドが CoreAudio に最適ですか? NSThreads? NSOperationQueue? GCD? 他の何か?
どうもありがとう。
objective-c - NSOperationは新しいスレッドを生成しませんか?
いくつかのNSOperationsを含むNSOperationQueueがあります。コードの特定の部分が並行して実行されないようにしたい。私は次のようなNSLockオブジェクトを使用します。
残念ながら、「ロック」呼び出しをブロックする代わりに、次のエラーが発生します。
-[NSLockロック]:デッドロック('(null)')
調査の結果、すべてのNSOperationが同じスレッドで実行されているように見えることに気付きました。スレッドIDを次のように記録した後、その結論を導き出しました。
すべての操作は同じスレッドで実行されているようです。それらは操作として並行して実行されていますが。
それは理にかなっていますか?私は少し混乱しています。私は何かが恋しいですか?NSOperationとNSLockを一緒に使用することに問題がありますか?(そうでない場合は、エラーが私のコードにあると確信しています)
iphone - iPhoneで長く依存する非同期プロセスを設計して開始するための最良の方法は?
私はiPhoneアプリのデザインに取り組んでいます。私には、次のように高レベルで定義された、開始するためのかなり激しいプロセスがあります。
- ユーザーは、アプリ内購入のためにUITableViewからアイテムを選択します。
- ユーザーがUIで購入を確認します。
- 非同期プロセスはAppStoreに移動し、アイテムが以前に購入されたかどうかを確認します。そうでない場合、アイテムは購入されます。その後、iPhoneアプリにアイテムの購入が成功したことが通知されます。(以前に購入した場合、アプリは気にせず、手順4に進みます。)
- 次に、アプリはプライベートサーバーに移動して、購入したアイテムのデータをダウンロードします。
- 次に、アプリはデータをCoreDataにインポートします。
もちろん、プロセスの各ステップでエラーがユーザーに報告され、プロセス全体が停止します。
何が起こっているかを示すテキストとともに、ユーザーに優れたUIActivityIndicatorを提示するactivityIndicatorControllerというクラスがあります。プロセスの各ステップで、activityIndicatorのラベルを新しいステータスで更新する必要があります。
質問/懸念:
設計とコーディングの観点からすると、最も簡単なことは、すべてのステップで1つの大きなNSOperationを使用することです。しかし、これが後で私を悩ますかもしれないのではないかと心配しています。私は間違った道をたどり、後でたくさんのコードを切り離さなければならないことを望んでいません。
私の内臓は、3つの別々のNSOperations(OpInAppPurchase、OpDownload、OpImport)を実装する方が良いと言っています。ただし、後続の各操作は、前の操作に依存しているだけでなく、1つが失敗した場合は、残りのNSOperationsをまったく呼び出さないでください。しかし、これをどのように設計/コーディングするかはわかりません。
どんな助けでも大歓迎です。
編集:
これまでの皆さんの助けに感謝します。私が達成しようとしていることについては、ユーザーに操作をキャンセルしてほしくない。ただし、アプリで後続の操作をキャンセルできるようにしたいと思います。私が気づかず、試行錯誤(つまり「当たり前」の瞬間)によってのみ発見されたのは、操作が別のプロセスで開始されると、開始される子操作も同じ別のプロセスで実行されるということです。 。
以下にリンクされているAppleの記事を読んだ後、私は今の自分のニーズに合わせて、NSInvocationOperationが必要なことを正確に実行し、プロセスごとに個別のNSOperationオブジェクトを作成する必要がないことを発見しました。次に、失敗した場合はメインスレッドへのNSErrorオブジェクトを使用してコールバックを実行し、成功した場合はメインスレッドへの別のコールバックを実行します。
おそらく、ユーザーが将来キャンセルできるようにしたい他のプロセスがいくつかあり、他のイベントでNSOperationを使用します。
ios - GCDよりNSOperationに適したタスクはどれですか?
iPhone用にプログラミングするときNSOperation
に使用するよりも、使用するのに適したタスクはどれですか?GCD
私には、彼らは同じことをしているように見えます。どちらか一方の長所と短所がわかりません。
iphone - NSFetchedResultsController と NSOperation
では、データUITableViewController
に を使用しNSFetchedResultsController
ます。別のスレッドでいくつかのオブジェクトのインポートを開始する場合を除いて、すべて正常に機能します。NSOperationQueue
オブジェクトを my に挿入するを使用しますManagedObjectContext
。これは別のビューで発生します。はこれNSFetchedResultsController
が気に入らないようで、コンソールに次のように書き込みます。
重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。userInfo (null) を使用してセルの 2 つのアニメーションを作成しようとしています
どうやら、新しいオブジェクトを取得しようとしています。
並行性のトピックについては、Core Data Programming Guideに for each スレッドを使用するようなことが書かManagedObjectContext
れていますが、それはかなり複雑に聞こえます。
実際に独自のNSOperation
サブクラスを作成する必要があるかどうか、その中に を作成する必要があるかどうか、または の更新をしばらくManagedObjectContext
防ぐことができるかどうかはわかりません。NSFetchedResultsController
助けていただければ幸いです、ファビアン