問題タブ [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.

0 投票する
2 に答える
299 参照

iphone - すべてのアクティブなスレッドを検索する

iPhoneアプリケーションのアクティブなスレッドをすべて列挙する方法を見つける必要があります。これは厳密にデバッグ目的です。プライベートAPIがある場合は、それも歓迎します。デバッガウィンドウに現在のすべてのスレッドが表示されることはわかっていますが、可能であれば、実際のNSThreadオブジェクトにアクセスしたいと思います。

0 投票する
1 に答える
265 参照

iphone - NSRunLoop が奇妙なセレクターを受信して​​います。可能な競合状態のおふざけ?

メイン スレッドが UI を処理している間に、いくつかのスレッドが負荷の高い作業を行っています。スレッドは、プログレス バーを更新するために時々メイン スレッドにコールバックします。

全体として、それはそれほど安定していません。ロジックに関連する問題を修正しましたが、特に 1 つが解決しません。停止ボタンのように機能するコードがいくつかあります。つまり、スレッドが次に何が起こっているかを確認するときに、スレッドがそれ自体を更新しようとしないことを意味します。

停止ボタンを押すと、次のエラーが表示されることがあります。

-[NSRunLoop isEnabled]: 認識されないセレクターがインスタンスに送信されました...

スレッドの作業フェーズの終わりに向かって停止ボタンを押すと発生するようです。この間、次のことを除いてあまり機能しません。

  • 一部の OpenGL メモリを解放する
  • メインスレッドで最終メソッドを呼び出す
  • 自動解放プールをドレインする
  • そして戻る

しかし、率直に言って、エラー メッセージは不可解すぎて、どこから始めればよいかさえわかりません。誰でも NSRunLoop に光を当てることができますか?この「isEnabled」メソッドが何であるか、または何が問題になっているのかを一般的に突き刺すことはできますか?

0 投票する
2 に答える
181 参照

objective-c - 何かを NSLog'ing すると、保持カウントが変更されますか? ここでゆっくりと狂っていくから

この質問に加えて: NSRunLoop は奇妙なセレクターを受け取っています。可能な競合状態のおふざけ?- UIGestureRecognizer の割り当てが解除され、メッセージを受信して​​いることが判明した場合、ゾンビによって報告されたものかどうかを確認するために、GR の 1 つのアドレスを出力しました。

コード内の印刷メッセージにより、最初に探していたクラッシュを引き起こすことができなくなりました。印刷メッセージを削除すると、再び発生する可能性があります。

割り当て解除/保持/解放の問題を扱っているので、このオブジェクトを出力することで参照される可能性があるかどうか、誰か教えてもらえますか? もしそうなら、それは私の元の問題について何を教えてくれますか? リリースが多すぎる?リリース早すぎない?

0 投票する
1 に答える
367 参照

objective-c - NSInvocationリーク

PerformSelectorInBackgroundを使用してセレクターをバックグラウンドスレッドで起動するようにNSInovcationシステムをセットアップしようとしています:-これまでのところ、インスタンスメソッド(-)でシステムを実行するとすべてが成功しますが、クラスメソッド(+)もサポートしたいと思います。両方のタイプのクラスにinvokeInBackgroundThreadを提供するようにコードを調整し、1つの問題を除いてすべてが機能しました。クラスメソッドが呼び出されると、コンソールに「プールが配置されていない状態で自動解放されました」というメッセージが殺到します。何が原因なのかわかりません。DDFoundationオープンソースプロジェクトに基づくコードを以下に示します。




0 投票する
1 に答える
1272 参照

iphone - バックグラウンド内でデリゲートのメソッドを呼び出す

これが私の最初の質問ですので、間違えたらすみません!

私のiPhoneプロジェクトでは、実行に時間がかかるスレッドで実行されているメソッドがあります(そのため、スレッドで実行されます)。

私の目標は、このメソッドで進行中の進行状況を、このメソッドを呼び出すViewControllerに通知することです。これが、ViewControllerをクラスのデリゲートとして設定した理由です。

今、高価な方法で私は次のことをします:

しかし、残念ながら、これは機能しません。なぜなら、私はバックグラウンドスレッドにいるからです。

メソッドが非同期で実行されている変更をデリゲートに通知するにはどうすればよいですか?

0 投票する
1 に答える
583 参照

iphone - バックグラウンドで OpenGl ビューを読み込みます。iPhone

3D モデルをレンダリングする OpenGL ビューがあります。これは Apples EAGLView の基本的な修正です。このビューはコントローラーの .view に追加され、 presentModalViewController: で表示されます。ユーザーがビューの表示を選択する前に、アプリの起動時にすべてのモデルの読み込みと OpenGL 状態の構成をバックグラウンド スレッドで実行したいと考えています。これは可能ですか?テクスチャをロードし、ライティングをセットアップし、通常はすべてをバックグラウンド スレッドでレンダリングする準備を整えることはできますか? バックグラウンドでレンダラーをセットアップしているときに、メインのアプリの Cocoa タッチ部分が OpenGL の状態を操作するのではないかと心配しています。コントローラーはもちろんメインスレッドから表示されます。OpenGl-ES のこのレベルの理解は、私が頻繁に扱うものではないので、私の質問が何らかの形で奇妙である場合は、優しくしてください :)

0 投票する
2 に答える
2572 参照

objective-c - デッドロック: 呼び出しが iOS のメイン スレッドから安全でないペイントを引き起こす可能性があるかどうかをどのように判断しますか?

描画/ペイントは常に GUI スレッドで行う必要があります。そうしないと、デッドロックが発生する可能性があります!...

呼び出しが iOS のメイン スレッドから安全でないペイントを引き起こす可能性があるかどうかをどのように判断しますか?

問題は、メインスレッドにないこのようなスタックを取得することです...

これを引き起こすかどうかはどうやってわかりますか?何か間違ったことをしたときに自分自身に警告するためのデバッグのヒントやその他のテクニックはありますか?

0 投票する
5 に答える
224 参照

iphone - 速度のための NSThreading

私はゲーム sim に取り組んでおり、マッチ シミュレーション ビットを高速化したいと考えています。特定の日付で、シミュレーションが必要なマッチが 50 件以上ある場合があります。現在、私はそれぞれをループして、自分自身をシミュレートするように指示していますが、これには永遠にかかる可能性があります. 私は望んでいた

1) 「忙しい」画面を重ねる

2)それぞれのスレッドを起動します

3) 最後のスレッドが終了したら、オーバーレイを削除します。

これで 1 と 2 を実行できますが、最後のスレッドがいつ終了したかを知る方法がわかりません。これは、デタッチした最後のスレッドが最後のスレッドではない可能性があるためです。それを行う最善の方法は何ですか?

また、通常はスレッドを使用して、ユーザーが他の作業を行っている間にバックグラウンドで作業を行うことができますが、私はそれを少し異なる方法で使用しています。私のアプリはコアデータアプリであり、試合をシミュレートしている間、ユーザーが他の方法でストアに触れないようにしたい. したがって、ほとんどの場合はシングルスレッドが必要ですが、sim エンジンに時間がかかるため、この状況ではマルチスレッドが必要です。誰かがこのアプローチについて他のアイデアを持っている場合、私はオープンです。

ロブ

0 投票する
0 に答える
477 参照

iphone - 新しいスレッドでの iPhone のアップロード

私は自分のアプリにバックグラウンド スレッドを実装して、長時間のハード グラフト アップロードを実行しようとしています。

私は FBConnect SDK を使用しており、完全に動作していますが、GUI 側をスムーズに動作させたいと考えており、現在、アップロードを開始する前にアプリで顕著な一時停止が発生しています。

現時点では、アップロード ジョブをキューに追加し、「startQueue」を実行しています。

これにより、キューから最初のジョブが取得され、画像のサイズが変更され、Facebook へのアップロードが開始されます。

独自のスレッドで実行を開始するのは、URL 要求が作成された時点でのみであり、GUI の制御を取り戻すことができます。

私が望むのは、キューにジョブを追加してから、別のスレッドで「startQueue」を実行できるようにすることです。これにより、すぐに GUI を制御できるようになります。

何が起こっているかというと、すぐに GUI に戻り、画像のサイズが変更され (新しいスレッドで)、Facebook のアップロードが (これも新しいスレッドで) 開始されますが、何も起こりません。

この子スレッドでできることとできないことについて、何らかの制限はありますか? URL 接続は許可されていませんか? 電話にエラーはないようで、問題なくジョブをキューに追加できますが、最初のアップロードは完了しません。

init メソッドはスレッドを作成します...

次に、 add job メソッドがそれを開始します...

その後、これは次のように実行されます...

スレッドを使用しなくても (つまり、startJob を実行するだけで)、すべてが完全に機能します。bgThread start を呼び出すと、完全に実行され、Facebook NSLog を取得できますが、ジョブは決して終了しません。エラーになっても終わりません。

あなたが提供できるかもしれないポインタやヒントをありがとう!

オリバー

0 投票する
3 に答える
791 参照

iphone - ココアのNSRunLoops?

たとえば、2つのスレッドがあり、1つはメインスレッドで、もう1つはセカンダリスレッドです。メインスレッドが最も使用されていますが、(まれに)メインスレッドからの呼び出しに基づいてセカンダリスレッドに何らかの作業を実行させたい場合があります。ほとんどの場合、セカンダリスレッドはスリープする必要があります。いくつか検索した後、これを行う方法はrunLoopsを使用することであることがわかりました。だから私はアップルのドキュメントを読んでみました(http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW5)。

しかし、それは私には非常に複雑に見え、私はそこで少し苦労しています。私が説明したことを達成するためのエレガントでシンプルな方法はありますか?実行して遊ぶことができる同様のrunLoopコード例はありますか?

ありがとう