apakah ada yang tahu apakah mungkin untuk membatalkan event selector yang sudah antri dari event stack atau timer stack (atau mekanisme apa pun yang digunakan oleh API) saat Anda menelepon performSelector:withObject:afterDelay
?
Saya menggunakan tumpukan acara ini untuk mengubah atribut gambar dalam tab TabBar, dan terkadang mengantri hingga 10 detik untuk perubahan dalam satu perulangan dengan cepat ... mungkin 5 milidetik atau lebih.
masalah muncul jika pengguna beralih tab ... seperti katakanlah saya memiliki perubahan gambar antri untuk gambar yang ditampilkan segera setelah Tab # 4 diaktifkan, dan kemudian pengguna dengan cepat beralih ke Tab # 3 dan kemudian kembali ke Tab # 4 ... ini kemudian akan memasukkan kembali perubahan lain selama 10 detik sementara antrian lama masih diputar, mungkin sekitar 2 atau 3 detik ke antrian jika dialihkan cukup cepat ... tetapi bahkan tiba di 5 detik ke arus adalah masalah.
jadi saya membutuhkan beberapa cara untuk membatalkan tumpukan perubahan lama sebelum meletakkan tumpukan baru ...
Saya menulis kueri ini di masa lampau karena saya sudah menemukan solusi alternatif untuk masalah ini dengan menambahkan filter peristiwa mata elang pada fungsi pemutaran. Namun saya masih penasaran apakah pembatalan acara dapat dilakukan, karena menurut saya pengetahuan tersebut akan berguna di masa mendatang. terima kasih atas bantuan yang diberikan :)
sumber
Jawaban:
atau
Ini
target
adalah objek asli yangperformSelector:afterDelay:
dipanggil.Sebagai contoh:
Lihat dokumen apple , ini tepat di akhir
performSelector:withObject:afterDelay:
deskripsi.sumber
Untuk membatalkan semua permintaan perform sebelumnya, Anda dapat menggunakan:
sumber
Jika Anda mencari "performSelector" yang cocok dengan "
cancelPreviousPerformSelector
" ... ternyata tidak. (Ugh, Apple, kenapa kamu melakukan itu padaku ???)Metode, er, ah, "mencocokkan" adalah:
(Hanya untuk membuatnya lebih sulit untuk diingat, tanpa menelusuri dokumen.)
sumber
Periksa dokumen NSRunLoop. Kamu ingin
-cancelPerformSelectorsWithTarget:
sumber