Setiap kali saya mencoba mengunduh file besar di belakang UIScrollView
, MPMapView
atau sesuatu, proses pengunduhan terhenti segera setelah saya menyentuh layar iPhone. Untungnya, posting blog yang luar biasa dari Jörn menyarankan opsi alternatif, menggunakan NSRunLoopCommonModes
untuk koneksi.
Itu membuat saya melihat secara detail dari dua mode, NSDefaultRunLoopMode dan NSRunLoopCommonModes, tetapi dokumen apel tidak menjelaskan dengan baik, selain mengatakan
NSDefaultRunLoopMode
Mode untuk menangani sumber input selain objek NSConnection. Ini adalah mode run-loop yang paling umum digunakan.
NSRunLoopCommonModes
Objek yang ditambahkan ke run loop menggunakan nilai ini sebagai mode yang dipantau oleh semua mode run loop yang telah dideklarasikan sebagai anggota dari set mode "umum"; lihat deskripsi CFRunLoopAddCommonMode untuk detailnya.
CFRunLoopAddCommonMode
Sumber, pengatur waktu, dan pengamat didaftarkan ke satu atau beberapa mode putaran berjalan dan hanya berjalan ketika putaran putaran berjalan di salah satu mode tersebut. Mode umum adalah sekumpulan mode run loop di mana Anda dapat menentukan sekumpulan sumber, timer, dan pengamat yang digunakan bersama oleh mode ini. Alih-alih mendaftarkan sumber, misalnya, ke setiap mode run loop tertentu, Anda dapat mendaftarkannya satu kali ke mode pseudo umum run loop dan secara otomatis akan terdaftar di setiap mode run loop dalam set mode umum. Demikian juga, ketika mode ditambahkan ke set mode umum, sumber, timer, atau pengamat apa pun yang sudah terdaftar ke mode pseudo umum ditambahkan ke mode umum yang baru ditambahkan.
Adakah yang bisa menjelaskan keduanya dalam bahasa manusia?
sumber
NSRunLoopCommonModes
memungkinkan acara pengatur waktu saat bergulir masukUIScrollView
.NSDefaultRunLoopMode
cegah timer saat menggulir.