問題タブ [nsinvocationoperation]
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.
ios - NSInvocationOperation-別のスレッドでメソッドを呼び出さないのですか?
だから私はfetchと呼ばれるメソッドを持つサービスクリントクラスを持っています。NSInvocationOperationを使用してこのメソッドを呼び出しています。スレッドを確認すると、メインスレッドのmthodが呼び出されているようです。NSInvocationOperationを使用して非同期で実行することの全体的なポイントではありませんか?
呼び出し方法
サービスクライアントのメソッド
iphone - 非同期接続が呼び出されない
1つのViewControllerクラスに2つの接続を作成したいと思います。私はこの目的のためにNSOperationQueueを使用しています。2つの接続は2つの関数で作成され、キュー内にプッシュされます。問題は、デリゲートが呼び出されないことです。私を助けてください。よろしくお願いします
ios - Operation の種類を追跡する iVar を追加するために NSInvocationOperation をサブクラス化するのは良いことですか?
KVO 通知の isFinished でこの操作が何であるかを識別するために、それぞれの NSInvocationOperation を識別したいと考えました。
そのため、VC で NSInvocationOperation を iVAr として維持しないことを計画しています。しかし、KVO 通知を受け取ったときに、NSInvocationOperation を識別できるようにしたいと考えていました。そのため、操作を識別するために使用できる値を格納できるタグを (NSInvocationOperation をサブクラス化することによって) 追加することを計画しています。
これはオブジェクトを識別する良い方法ですか? 代替手段はありますか?
iphone - maxConcurrentOperationCount を無視する NSInvocationOperation
NSInvocationOperation を使用して、いくつかの TWRequest 呼び出しをキューに入れようとしています。メソッド呼び出しを正しい順序で追加しているように見えますが、doSomething: メソッドはほぼ同時に呼び出されます。つまり、次々にではなく同時に実行されます。これが私が達成したいことです。
さらに、完全な順序が間違っているため、次々に実行されていないことがわかります...
ログには次のように表示されます。
(1)が終了した後に(2)リクエストを実行することを期待しています...何かポインタはありますか?
iphone - NSOperationQueueを非同期に使用してWebから複数の画像をロードする
サーバー上に存在する画像を指す配列または URL があります。各行に4つの画像があるスクロールビューに画像を表示したいと思います。NSOperationQueue と NSInvocationOperation を使用して画像を非同期でダウンロードすることを考えています。次の URL を参照として使用しています:
http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation
しかし、複数の画像をダウンロードする方法がわかりません。複数の NSInvocationOperation オブジェクトで for ループを実行し、それを NSOperationQueue オブジェクトに追加する必要がありますか?
私は自分の仕事を達成するためのガイダンスを探しています。
編集: 私は次のことを行いましたが、NSOperationQueueはNSInvocationOperationオブジェクトを呼び出すことができません
ありがとうござい
ます
iphone - NSOperationからUITableViewをリロードします
NSInvocationOperationからUITableViewをリロードするために、次のコードを記述しました。ただし、を呼び出した後、インターフェイスは長時間更新されません[tableview reloadData]
。
Appleのドキュメントによると、デリゲートメソッドはNSOperation内では呼び出されません。
objective-c - Arguments retained After finishing NSIvocationOperation?
Edited after I got the answer:
- Actually there are no memory leaks. Object added to NSInvocationOperation will be retained and also released as expected.
Why is it that after I add an object to NSInvocationOperation it is retained and also after that operation is finished it is retained once again?
And how do I prevent memory leaks?
Down there is my example code. I apologize if that much code is annoying you, but I just wanted to be sure that I didn't miss anything. Also, comments next to NSLogs show their output.
My whole AppDelegate.m:
And here is output in case you want to compare:
objective-c - NSOperationQueueが原因でUIが更新されなかったwaitUntilFinishedYES
問題が発生しました。シナリオは次のようになります。waitUntilDone:YESが必要なさまざまなNSOperationQueueを含むNSOperationQueueを取得しました。また、キューまたは操作の実行中にUIも更新する必要があります。この状況に対処するための最良の方法は何ですか?
PerformSelectorOnMainThreadを試しましたが、UIを更新する必要があるたびにこのメソッドを使用する必要があります。それは良い解決策ではないようです。
したがって、UIを更新するたびに、呼び出す必要があります
ios - NSOperationQueue は特定の操作をキャンセルします
問題は、たくさんのタイルを含む scrollView を管理していることです。URL から読み込まれた、または (最初の URL 読み込み後に) バックグラウンドでキャッシュされたファイルから読み込まれた各表示タイル表示画像。目に見えないタイルはリサイクルされます (新しいフレームを設定して再描画します)。
画像の読み込みはタイルの位置に依存します。
長距離スクロールでは、タイルごとに複数の再描画が呼び出されます。各タイルは、正しい画像を表示する前に、異なる画像を数回ロード (および表示) します。
したがって、問題は、新しいタイルを追加する前に、タイルに対して以前に追加されたすべての操作をキャンセルすることです。
接続されている操作を検出するためのコンテキスト オブジェクトを含めるためだけに NSInvocationOperation をサブクラス化し、新しい操作を追加する前に、同じタイルのすべての操作をキャンセルします。
そして、操作自体で isCancelled をチェックします。
しかし、それは何もしません。早期リターンが機能する場合もありますが、タイルは正しい画像の前に多くの画像をロードします。
では、どうすれば成功できるでしょうか?そして、この多くの不要な操作により、スクロール時にメインスレッドで遅延が発生する可能性がありますか? (遅延が存在し、理由がわからないため...すべてバックグラウンドでロードされます..)
アップデート:
NSLog の場合: 実行中に isCancelled: > loadImage メソッドをキャンセル: >
というわけで作業キャンセル。
ここで、最後の操作への参照を TileView オブジェクトに保存し、呼び出された操作が TileView 操作と等しい場合にのみ setImage 操作を実行します。
違いはありません...
次々に呼び出される 1 つのタイルにさまざまな画像をロードする操作が多数あるようです。
他に提案はありますか?
クリアランスの場合:
シングルトン DataLoader があります (それからのすべてのコード)。そして、すべてのタイルは drowRect でそれを呼び出します:
アップデート:
NSInvocationOperation サブクラス:
助けてくれてありがとう!
解決:
以下の回答から: NSOperation からサブクラス化する必要があります
NSOperation をサブクラス化し、すべての loadImage: コードを「メイン」メソッドに配置すると (すべてのコードをここに移動し、他には何も移動しません)、すべてが完璧に機能します!
スクロールの遅延について:UIImageViewに画像をロードする原因となります((私が理解しているように)解凍とラスタライズのために長い時間がかかります)。
より良い方法は、CATiledLayer を使用することです。バックグラウンドでデータをロードし、はるかに高速に実行します。
iphone - NSOperation への複数の引数?
アプリで NSOperationQueue を使用していますが、操作に複数の引数を設定したいのですが、どうすればよいですか?