問題タブ [performselector]

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 に答える
921 参照

ios - performSelectorOnMainThread iOS を使用した呼び出しでのオブジェクトのキャスト

私が使用する場合

-(void)uploadDidEnd:(id)sender メソッド内

送信者はどのオブジェクトですか? 呼び出しで foo はカスタムクラスですか? オブジェクトでこの送信者を変換するにはどうすればよいですか?

キャストしようとしていますが、持っています

通知では、送信者から NSNotification へのキャストを使用し、通知には object プロパティがありますが、NSThread については見つかりませんでした。

ありがとう。

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

objective-c - メインスレッドから更新が呼び出されてもUIが更新されない

私は見つけたすべての関連する質問を読みましたが、私はまだ立ち往生しているので、誰かが私の推論の誤りを見つけてくれることを願っています。

UIViewを定期的に更新しようとしています。簡単にするために、コードを以下のように減らしました。概要:viewDidLoadで、新しいバックグラウンドスレッドでメソッドを呼び出します。そのメソッドは、いくつかのUILabelを更新することになっているメインスレッドのメソッドを呼び出します。コードは正しく機能しているようです。バックグラウンドスレッドはメインスレッドではなく、UILabel更新を呼び出すメソッドはメインスレッドにあります。コード内:

viewDidLoadの場合:

これにより、新しいバックグラウンドスレッドが作成されます。私のメソッドupdateMeters(簡単にするため)は次のようになります。

最後に、updateUIはまさにそれを行います。

私が知っている限り、これはうまくいくはずです。しかし、残念ながらそうではありません...コメントアウトされたdispatch_async()結果は同じ結果になります。

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

objective-c - performSelector:withObject:afterDelay for ループを停止する

これは私が作業しようとしているコードスニペットですが、そのループは私が望む方法で停止しません:

for ループを有限にしたにもかかわらず、コードはループし続けます。私が望むのは、コードを実行し、2 秒間一時停止してから、値が設定したint値よりも小さい間にループを実行するloopLimitことです。

このperformSelector:withObject:afterDelay:方法はここで使用するのが適切ではない可能性があることがほのめかされていますが、ここで使用する方が良い理由や方法はわかりません。

明るい提案はありますか?

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

objective-c - cancelPreviousPerformRequestsWithTargetが機能していません

私はクラスでこのメソッドを使用してアクションを開始しています:

それを止めるために私は使っています:

しかし、決して止められません。

両方の呼び出しは、同じクラス、同じスレッドで実装されます。

私もこれを使用しましたが、それは解決しません:

私が欠けているものは何ですか?

ありがとう。

- -編集 - -

私が使用しているメインスレッドかどうかを知るには:

正常に動作し、ログに常に表示されるとは限らない場合は、メインスレッドです。

私が起動しているセレクター(startRollingとcommitAnimations)を実行しているのは、[UIView beginAnimation:context:)を使用したアニメーションです。

これが理由である可能性はありますか?

ここに方法があります:

stopRollingメソッドを呼び出すメソッドは、performOnMainThreadを使用して呼び出されています。

ありがとう。

- 編集 - -

提案を使用してメソッドを変更しましたが、まだ機能していません。

画像間の遷移が実行されているときにユーザーが画面をタップすると、機能しない場合があることを確認しました。ただし、画像が画面に表示されているときに(2秒間)ユーザーが画面をタップすると、すべて正常に機能します。

常にメインスレッド上。

:(私は必死です、これはメモリのためにプログラムをクラッシュさせます。

- 編集 -

最後に、BOOLフラグを使用して解決しました。しかし、これがなくても機能する必要があるため、これは不十分な解決策だと思います。アニメーションが実行されていないときにのみ機能するため、アニメーションの実行中に何か奇妙なことが起こっています。

これはすべての場合に機能します。

すべてに感謝します。

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

ios5 - いつ、なぜperformSelectorを使用するのか-iOS

私はperformSelectorを使用する理由と方法を理解しようとしています。私はAppleDocsに出くわしました。しかし、私はそれを完全に理解することはできません。

誰かがこれを説明するのを手伝ってくれるでしょうか?

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

objective-c - connection:didReceiveData:data内から更新されたラベルの遅延

私はダウンロードマネージャーに取り組んでおり、ダウンロード速度と残りの割合を示すラベルを更新しようとしています。

ただし、connection:didReceiveData内での更新が速すぎるため、performSelectorを使用してそのメソッドから遅延させることはできません(開始する前にそれだけ遅延させるだけです)。

ダウンロード速度や残りの割合などを更新するにはどうすればよいですか?

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

iphone - Objective C/iPhoneの開発におけるPerformSelectorの使用は何ですか

Objective Cでの実行セレクターの使用は何ですか?実行セレクターと応答セレクターの違いを教えてください。

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

ios - viewDidLoad()とeventmethod()でperformSelectorOnMainThread()を呼び出す違いは何ですか?(ios)

}

このコードでは、LONGWORKが終了する前に表示UIWORKを表示します。これで、スレッド効果を得ることができます。

このコードでは、LONGWORKが終了した後に表示UIWORKを表示します。だから私はスレッド効果を持つことができません。なぜ?そして、(performSelectorOnMainThread withObject:waitUntilDone :)の代わりに(performSelectorInBackground:withObject:)を使用します。しかし、これはスレッドを使用しない場合よりも遅くなります。

イベントメソッド呼び出しでスレッド効果を持たせたい。良い方法はありますか?お願い助けて!

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

iphone - メソッドの実行が完了する前にオブジェクトが解放された場合はどうなりますか

Webサービスを起動してデータを取得し、別のスレッドで解析した後、結果をコアデータに格納するviewControllerがあります。

データがたくさんあるので、解析に時間がかかり、ナビゲーションでviewControllerをポップすると、解析メソッドの実行が停止するかどうかわかりません。

途中で実行を停止すると、コアデータDBが破損するため、viewControllerオブジェクトを解放する前に、実行を停止するか、セレクターを実行します。

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

objective-c - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]を使用して、スケジュールされたセレクターを起動させます

私のアプリケーションでは、ある時点で、を使用してスケジュールされた一連のメッセージがありますperformSelector

状況によっては、UIアクションを処理しているときに、現在スケジュールされているすべてのセレクターが起動するのを待つ必要があります。

コードを別のメソッドに配置し、最後に実行されることを確認するのに十分高い値を使用performSelector:target:argument:order:modes:してスケジュールすることorderもできますが、それが醜い解決策になると思う理由があります。

だから私は送ります[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]、そしてそれは私がそれを必要とするのと同じように働くようです。

それでも、それが1回の反復で実行ループをロールさせる正当な方法であるかどうかはわかりません。また、このアプローチに関連する潜在的な問題はありますか?