Bagaimana cara menggunakan NSTimer
? Adakah yang bisa memberi saya petunjuk langkah demi langkah?
objective-c
cocoa
nstimer
lab12
sumber
sumber
Jawaban:
Pertama-tama saya ingin menarik perhatian Anda pada dokumentasi Kakao / CF (yang selalu merupakan tempat panggilan pertama yang bagus). Dokumen Apple memiliki bagian di bagian atas setiap artikel referensi yang disebut "Panduan Pendamping", yang berisi daftar panduan untuk topik yang didokumentasikan (jika ada). Misalnya, dengan
NSTimer
, dokumentasi mencantumkan dua panduan pendamping:Untuk situasi Anda, artikel Topik Pemrograman Waktu cenderung menjadi yang paling berguna, sementara topik threading terkait tetapi tidak yang paling langsung terkait dengan kelas yang didokumentasikan. Jika Anda melihat artikel Topik Pemrograman Waktu, artikel ini dibagi menjadi dua bagian:
Untuk artikel yang menggunakan format ini, sering kali terdapat ikhtisar kelas dan untuk apa digunakannya, dan kemudian beberapa contoh kode tentang cara menggunakannya, dalam hal ini di bagian "Menggunakan Pengatur Waktu". Ada bagian pada "Membuat dan Menjadwalkan Timer", "Menghentikan Timer" dan "Manajemen Memori". Dari artikel tersebut, membuat pengatur waktu terjadwal dan tidak berulang dapat dilakukan seperti ini:
Ini akan membuat timer yang dipecat setelah 2,0 detik dan panggilan
targetMethod:
padaself
dengan satu argumen, yang merupakan pointer keNSTimer
instance.Jika Anda ingin melihat lebih detail pada metode ini, Anda dapat merujuk kembali ke dokumen untuk informasi lebih lanjut, tetapi ada penjelasan di sekitar kode juga.
Jika Anda ingin menghentikan timer yang berulang, (atau menghentikan timer yang tidak berulang sebelum menyala) maka Anda perlu menyimpan pointer ke
NSTimer
instance yang telah dibuat; sering kali ini harus berupa variabel instan sehingga Anda dapat merujuknya ke metode lain. Anda kemudian dapat memanggilinvalidate
padaNSTimer
contoh:Ini juga praktik yang baik untuk
nil
mengeluarkan variabel instan (misalnya jika metode Anda yang membatalkan timer disebut lebih dari sekali dan variabel instan belum disetel kenil
danNSTimer
instance telah dibatalkan alokasi, itu akan mengeluarkan pengecualian).Perhatikan juga poin tentang Manajemen Memori di bagian bawah artikel:
sumber
YES
untukrepeats:
saat Anda meneleponscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
. Jika Anda melakukannya maka pastikan untuk menyimpan referensi keNSTimer
instance (dikembalikan oleh metode) dan ikuti titik pada Manajemen Memori seperti yang saya perincikan di atas.target
danselector
. Misalnya, jika target Anda adalahself
dan pemilihnyatimerMethod:
, metode yang dipanggil ketika timer menyalatimerMethod:
ditentukan padaself
. Anda kemudian dapat memasukkan kode apa pun yang Anda inginkan dalam metode itu, dan metode itu akan dipanggil setiap kali timer menyala. Perhatikan bahwa metode yang dipanggil ketika timer menyala (yang Anda lewati sebagaiselector:
) hanya dapat mengambil satu argumen (yang ketika dipanggil adalah pointer keNSTimer
instance).self
"ada beberapa cara menggunakan timer:
1) penghitung waktu terjadwal & menggunakan pemilih
Sebagai catatan tambahan, alih-alih menggunakan penghitung waktu yang tidak berulang dan memanggil pemilih setelah interval yang ditentukan, Anda bisa menggunakan pernyataan sederhana seperti ini:
ini akan memiliki efek yang sama dengan kode sampel di atas; tetapi jika Anda ingin memanggil pemilih setiap kali, Anda menggunakan timer dengan pengulangan: YES;
2) pengatur waktu terjadwal
3) timer tidak terjadwal & menggunakan doa
dan setelah itu, Anda memulai timer secara manual kapan pun Anda perlu seperti ini:
Dan sebagai catatan, metode onTick: terlihat seperti ini:
sumber
Sesuatu seperti ini:
sumber
sumber
MyViewController
tidak pernah dibatalkan alokasi.sumber
Jawabannya tidak ada waktu waktu tertentu di sini adalah pada jam berikutnya:
Tentu saja, gantikan "doRefresh" dengan metode yang diinginkan kelas Anda
coba buat objek kalender sekali dan jadikan semua Unit statis untuk efisiensi.
menambahkan komponen satu jam berfungsi dengan baik, tidak perlu untuk tes tengah malam ( tautan )
sumber