問題タブ [nsthread]
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 - iPhone:NSThreadを使用して数千の画像をロードするためのベストプラクティス?
NSThreadを使用して何千もの画像を読み込もうとしていますが、パフォーマンスがかなり遅くなっています。
NSThreadを使用して何千もの画像をダウンロードするためのベストプラクティスは何でしょうか?
ありがとう、
ジム。
iphone - セカンダリ スレッドに渡されたオブジェクトをいつ解放/保持するか?
次のコードを使用して、オブジェクトをセカンダリ スレッドに渡しています。
私の質問は、autorelease はこのオブジェクトのリリースを処理する正しい方法ですか?. セカンダリ スレッドに渡されたら保持し、不要になったら解放します。
ただし、セカンダリ スレッドがオブジェクトを保持する前に、自動解放によってオブジェクトが解放される可能性はありますか? このために ivar を作成する必要がありますか? ログイン後にオブジェクトが不要になったため、ivar は適切な方法ではないようです。これを処理する最良の方法は何ですか? ありがとうございました。
-オスカー
iphone - NSThreadが解放されたオブジェクトに戻るとき?(iPhone)
スレッドで何かが起こっていることに要約されるように見えるメモリバグがあります。これのトラブルシューティングに問題があります。
UIViewControllerがあります。これは、アクティブな場合、つまりユーザーがそのビューを使用している場合に、NSThreadのWebサービスから更新を取得します。
これは3分ごとに実行され、この遅延は次のように制御されます。
このtimerDone
メソッドは、Webサービスデータを取得するNSThreadを開始し、performSelector
メッセージを再度送信します。これは、正常に機能する小さな「更新の確認、ビューの入力、すべてのシャットダウン、繰り返し」ルーチンです。
これで、ユーザーはもちろん突然ボタンをタップして2番目のUIViewControllerをロードできます。これが起こったとき、私は電話します:
そして、dealloc
メソッドでクリーンアップを行います。
私の質問は今です:ユーザーがビューを変更し、NSThreadの開始点であるこのオブジェクトの分解を開始しているときにNSThreadが実行されていた場合はどうなりますか?
NSThreadがまだアクティブであるかどうか、およびアクティブである場合はNSThreadをどうするかを示すBOOLを保持する必要があります。
スレッド化は次のように行われます。
objective-c - NSThread、AsyncSocket、およびオブジェクトの割り当て解除
AsyncSocket を使用するネットワーク コードがありますが、それを別の実行ループに移動します。次のコードでこのランループを作成しています。
_workerLoop は次のようになります (両方とも同じクラスにあります)。
現在、ドキュメントによると、NSThread はターゲットを保持し、このスレッドは AsyncSocket が切断されたときにのみ終了するため、ソケットが切断されるまでこのオブジェクトを解放して割り当てを解除することは不可能です。
どうすればこれを修正できますか、それとも何か間違っているのでしょうか?
cocoa - NSURL接続のパフォーマンス
現在、アプリでいくつかの画像をダウンロードするために NSURLConnection を使用しています。これで実装する前に、NSThread の NSData(dataWithContentOfURL) で実装しました。でも、画像のダウンロード中にキャンセルしたかったので、NSURLConnectionに変更しました。
しかし、それは別の問題が発生します。変更後のパフォーマンスは非常に低かった。例えば、NSThread(NSData async)では画像のダウンロードに5秒以上かかるのですが、NSURLConnection(async)ではそれよりも2、3倍以上!!
パフォーマンスを向上させることはできますか?? どのように??
(* NSData(dataWithContentOfFile) に関する私の質問で申し訳ありません。正しい質問は dataWithContentOfURL です)
iphone - NSTimerを含むNSThreadを無期限に保持しますか?(iPhone)
アプリに3分ごとに更新する必要のあるWebサービスデータがあります。私はいくつかのアプローチを試しましたが、先週ここで非常に良いアドバイスを得ました。3分ごとに新しいスレッドを構築してから、メモリのバグを回避するために、すべての異なる部分の割り当てを解除して同期する必要があります。代わりに、常に実行されている「ワーカースレッド」が必要ですが、実際の作業は、私が要求したとき(3分ごと)にのみ実行されました。
私の小さなPOCが機能するようになったので、applicationDidFinishLaunching
メソッドに新しいスレッドを生成します。私はそうするようにこれをします:
わかりました。これにより、「BackgroundUpdate」オブジェクトが秒単位の更新間隔で初期化されます。アップデータの内部は、今のところ次のようになっています。
私はこれまでこのようなスレッドを使用したことがありません。私はいつも「autoReleasePoolをセットアップし、作業を行い、autoReleasePoolを使い果たして、さようなら」をしてきました。
私の問題は、initWithTimerInterval
が実行されるとすぐにNSThread
、それがupdateModelメソッドに戻り、プールが空になることです。NSTimerが独自のスレッド/実行ループを持っていることに関係していると思いますか?testIfUpdateNeeded
スレッドで3分ごとにメソッドを実行し続けたいと思います。
では、このNSThreadをアプリの全期間にわたって存続させるにはどうすればよいでしょうか。
与えられた助け/アドバイスをありがとう:)
cocoa - 一定時間コードを実行し、必要に応じて強制終了します
スクリプト ブリッジを使用して、ココア アプリケーションから iTunes にクエリを実行しています。ときどき iTunes がウィンドウをポップアップ表示し (iPod の更新が必要な場合など)、ポップアップ ウィンドウが開いている間は iTunes から情報を取得できません。したがって、この状態で iTunes に情報を要求すると、そのポップアップ ウィンドウが閉じられるまで、アプリケーションは完全にロックアップします。
したがって、iTunes に別のスレッドで簡単なことを尋ねて、そこから応答を取得できるかどうかを確認できる何らかのメカニズムが必要です...そして、その別のスレッドが短時間内に応答を受信しない場合、私のメインthread はそのスレッドを強制終了するだけなので、その特定の時間に iTunes にクエリを実行しないことがわかります。
そのようなメカニズムを作成する方法はありますか?スレッドを強制終了する方法を探しましたが、見つかりませんでした。
iphone - NSThreadの問題について2つの引数を使用してセレクターを呼び出す
複数の引数を持つスレッドを作りたいのですが。出来ますか?私は機能を持っています:
そして、この関数をセレクターとして呼び出したいと思います。
このdetachNewThreadSelect関数のwithObjectパラメーターに2つの引数を渡す方法は?
出来ますか?
iphone - スレッドがキャンセルされると、スレッドのメモリはどうなりますか?
ネットワーク接続が存在するかどうかを確認するコードを書いています。一言で言えば、発生させたいイベントの順序は次のようになります。
- ユーザーが Web サービスから情報を要求します。
- タイマーが開始し、接続が存在するかどうかを毎秒チェックします。そうでない場合は、ビューを作成します。
- Web サービスからの情報がすべて受信されると、2 のタイマーが終了します。
私が理解していることから、Web サービスのロード中にタイマーを実行するには、タイマーを備えた新しいスレッドが必要です。私はそれを行う方法を理解しており、大丈夫です。私が理解していることから、そのスレッドを終了するには、[スレッドキャンセル]; を呼び出します。そのスレッド内からメモリ管理を処理するにはどうすればよいですか。そこにはタイマーなどがありました。
私の他のスレッドは自己終了し、終了するとその内容がすべて解放されます。キャンセルでそれを行う方法はありますか?ありがとう。
iphone - セカンダリ スレッドからのインスタンス属性へのアクセス (iPhone-SDK)
NSDictionary 属性を持つクラスがあります。このクラス内で、別のスレッドをディスパッチして NSXMLParser 処理を処理します。-didStartElement 内で、クラスのディクショナリにアクセスします (XML 内の要素をディクショナリ内の要素と比較するため)。
この時点で、未定義の結果が得られます。NSLog を使用して (私は XCode のデバッグに詳しくありません)、NSDictionary へのアクセスを爆撃していることがわかります。私は辞書を繰り返し、didStartElement内にキー/値をダンプしようとしましたが、これは毎回異なるキーで爆撃します。
私が結論できる唯一のことは、セカンダリ スレッドからメイン スレッドの属性にアクセスすることに関して、私が行っていることはコーシャではないということです。私はマルチスレッドに少し慣れていないので、追加のスレッドから安全に属性にアクセスするのに最適なプロトコルが何であるかわかりません。
皆さんありがとう。