呼び出したときに、イベントスタックまたはタイマースタック(またはAPIで使用されるメカニズム)からすでにキューに入れられているセレクターイベントをキャンセルできるかどうかを誰かが知っていますperformSelector:withObject:afterDelay
か?
このイベントスタックを使用して、TabBarタブ内の画像の属性を変更していましたが、1回の高速実行forループで最大10秒に相当する変更をキューに入れることがありました...おそらく5ミリ秒程度です。
ユーザーがタブを切り替えると、問題が発生します...たとえば、タブ#4が有効になるとすぐに表示される画像の画像変更がキューに入れられ、ユーザーはすぐにタブ#3に切り替えてから、すぐにタブに戻ります。 #4 ...これにより、古いキューがまだ再生されている間に、さらに10秒に相当する変更が再キューに入れられます。十分に速く切り替えられた場合は、おそらく2〜3秒でキューに入れられますが、5秒で到着することもあります。ストリームが問題でした。
そのため、新しいスタックを配置する前に、変更の古いスタックをキャンセルする方法が必要でした...
再生関数にタカの目のイベントフィルターを追加することで、この問題の代替ソリューションをすでに思いついたので、過去形でこのクエリを書いています。ただ、将来的にはそのような知識が役立つと感じているので、イベントのキャンセルが可能かどうかはまだ気になります。提供された支援に感謝します:)