問題タブ [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 投票する
1 に答える
51 参照

iphone - サブクラスからの UIActions を処理できない

.net Web サーバーから情報を取得するために、SOAP Web サービスのクラスを作成しています。

そのために私は を使用NSMutableURLRequestして結果を解析していNSXmlParserます。

今、私はこのように myviewcontroller.m クラスからその Web サービス クラスを呼び出しています。

myviewcontroller.m クラスでその配列の詳細を使用するために、結果を配列に追加しています。

しかし、このメソッドの直後にその配列を使用している間、詳細を配列に取得できませんでした。

このようにその配列を使用するために、2秒後に別のメソッドを呼び出すことで、このようにしようとしています。

その理由はわかっていますが、解析に時間がかかります。

ビューコントローラーのオブジェクトを作成し、このメソッドをこのように呼び出すような別の方法を試しています。

詳細を取得できるようになりましたが、アラートの発生などの UIActivities を処理できません。

上記のperformSelector方法で述べたように、すべての UIActivities を処理できます。

しかし、結果の解析が完了した後にそのメソッドを呼び出す必要があります。

誰でも私を助けてください。

ありがとうございました。

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

ios - performSelector関連

iPhoneアプリ初心者です。ボタンが押されたときに2秒ごとにメッセージを表示したい そのために、このコードを使用しています。

このコードは一度だけ機能します。つまり、電話は 1 回だけです。この問題を解決するのを手伝ってくれませんか。

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

iphone - スレッドと autoreleasepool に関する質問

私が理解しているように、スレッドで実行されるタスクを送信するにはいくつかの方法があります。私が使用する最も一般的なものは次のとおりです。

1) performSelector:withObject:afterDelay:

2) performSelectorOnMainThread:withObject:waitUntilDone:

3) performSelectorInBackground:withObject:

4) [NSThread detachNewThreadSelector:toTarget:withObject:]

私の最初の質問は、明らかなパラメーターの違い以外に、1) と 2) の違いは何ですか? どちらも実際にメイン スレッドで動作していますか (その自動解放プールは main.m で自動的に作成されました)。Stackoverflow に関する誰かの投稿から、メソッド 1) が実際に新しいスレッドで動作していることを読んだところです。そのため、そのセレクター メソッド用に自動解放プールを作成する必要があります。これは正しいです?私は主に遅延パラメーターを利用するために 1) を多く使用してきましたが、それらの自動解放プールを作成したことはありません。壊滅的なことは何も起こっていません。

次に、3) と 4) はどちらも別のスレッドでタスクを実行します。これらのスレッドで UI の処理を​​行うべきではないと聞きましたが、厳密に UI とは何かについて混乱しています。テーブルビューがナビゲーションコントローラーからモーダルに起動している間に、基本的に繰り返し読み込みアニメーションを再生するコードを作成しようとしていました。アニメーションは、tableview コントローラーの viewDidLoad メソッドで停止されます。最初は、モーダル ビューを開始するコード行の上に、アニメーションを開始するコードを貼り付けました。何が起こったかというと、アニメーションはまったく再生されませんでした。

次に、次のことを試しましたが、うまくいきました...

アニメーションは、SettingsViewController ビューが完全に起動されるまで再生を続けます。しかし、このようなモーダル ビューの起動は「UI」としてカウントされ、避けるべきでしょうか? また、モーダル ビューが起動されるたびに、Instruments で奇妙なメモリ リーク エラーが発生します。しかし、それはデバッグが非常に難しいと言われている「システム ライブラリ」の 1 つからのものです。ここで何がうまくいかないのでしょうか?

恥ずかしいほどの長文で申し訳ありません。どんな助けでも大歓迎です!

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

ios - `cancelPreviousRequestsWithTarget` が NSTimer をキャンセルしないのはなぜですか?

次のようにインスタンスをスケジュールしNSTimerます。

発砲を止めるようinvalidateに呼びかけることはできますが、NSTimer

タイマーを停止しません。私が確認したところ、[NSRunLoop currentRunLoop]まったく同じです(予想どおり、これらはユーザーのクリックへの応答です)。もちろん、selfインスタンスは常に同じです。なぜcancelキャンセルしないのですか?

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

iphone - performSelector があるかどうかを確認する方法: 実行されるのを待っていますか?

私のiPhoneアプリには、私ができるいくつかの場所があります

[object performSelector: withObject: afterDelay:]

電話。すべてが同じ方法につながります。さて、そのメソッドで、最後の呼び出しでのみいくつかのコードを実行したいと思います。それが最初の場合は、一[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(thisMethod) object:nil]度だけ呼び出されるようにすることができます。

しかし、実行待ちのメソッド呼び出しが他にあるかどうかを確認する方法はありますか?

このクラスでカウンターを使用して、この実行後遅延を設定するたびにインクリメントし、各呼び出しの開始時にデクリメントして、このカウンターがゼロの場合にのみコードを実行することができます。しかし、それが最善/許容可能なアプローチであるかどうか疑問に思っています...

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

objective-c - 3 つ以上の引数で performSelector を使用しますか?

さまざまなperformSelector:...メソッドは、指定されたセレクターに渡される最大 2 つの引数を処理できます。3 つ以上の引数を渡す必要がある場合はどうすればよいですか?

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

objective-c - バックグラウンドで特定のメソッドを実行する...しかし

バックグラウンドで呼び出したいこのメソッドがあると想像してください。

曖昧で申し訳ありませんが、できる限り明確にしようと思います。以下は私がやりたいことです。ビューがありますが、このボタンと空の UITableView があります。次に、BackGroundMethod でバックグラウンドを実行したいのですが、実行中にボタンをクリックして、UITableView にデータを送信する buttonClicked メソッドを起動できるようにしたいと考えています。

次のことを試してみましたが、否定的な結果が得られました。

これによりBackGroundMethodが開始されますが、サーバーから要求したデータはロードされません。

これによりBackGroundMethodが開始されますが、何らかの理由でボタンをクリックすることはできません。ボタンをクリックすることはできますが、メソッドがクリックを起動している間に行うすべてのアクションはその背後のキューに入れられるため、backgroundmethodがボタンを押したx回が処理されます。

上記の performSelector-functions の使用をブロックする可能性のあるものと、それらを解決する方法を知っている人はいますか? または、全体的な(おそらくより良い)アイデアがあります..?

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

ios - これは正しいです?メソッドを直接呼び出す代わりに performSelector を使用する

このメソッドを使用してスーパービューを閉じようとしています[self.superview buttonPressedClose];

私はすでにスーパービューにそのメソッドを実装しており、すべてが機能しています。

しかし、コンパイル中に「UIView may not response to 'buttonPressedClose'」というアラートが表示されます。

次の行に変更すると、アラートは表示されませんが、これは正しい方法ですか?

ありがとう。

**編集されたタイプミス..

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

iphone - C ++クラスメソッドのperformSelector?

どうにかしてC++クラスメンバー関数でperformSelectorを呼び出すことはできますか?

performSelector 呼び出しを受け取るダミーの objc クラスを作成し、このダミー クラスが目的の c++ メンバー関数を呼び出すことを考えています。

しかし、より良い方法はありますか?

(メソッドをすぐに呼び出したくない理由は、スレッド化のためです)