Saya perhatikan metode yang ditandai opsional dalam beberapa protokol yang didefinisikan dalam iPhone SDK, seperti UIActionSheetDelegate
protokol misalnya.
Bagaimana saya bisa mendefinisikan protokol saya sendiri, dan menetapkan beberapa metode sebagai opsional?
iphone
objective-c
jpm
sumber
sumber
Jika suatu metode dalam protokol ditandai sebagai opsional, Anda harus memeriksa apakah suatu objek mengimplementasikan metode itu sebelum mencoba memanggilnya.
Sebagai contoh, tampilan diagram lingkaran mungkin menguji metode judul segmen seperti ini:
Metode ResponssToSelector: menggunakan pemilih, yang merujuk ke pengidentifikasi untuk metode setelah kompilasi. Anda dapat memberikan pengidentifikasi yang benar dengan menggunakan petunjuk @selector () dan menentukan nama metode.
Jika sumber data dalam contoh ini mengimplementasikan metode, judul digunakan; jika tidak, judulnya tetap nol.
sumber
@protocol MyProtocol <NSObject>
Protokol adalah seperangkat aturan. Kita dapat membuat protokol seperti contoh di bawah ini:
TestProtocols.h
Penerapan:
TestClass.h
TestClass.m
sumber
Gunakan
@optional
kata kunci sebelum deklarasi metode Anda untuk menjadikannya opsional. Sederhana seperti itu!sumber
Protokol bertindak sama dengan kelas abstrak, sehingga kata kunci @ opsional menentukan metode yang opsional untuk implementasi.
Jadi, dalam kode, someMethod1, someMethod2 dan someMethod4 adalah metode yang diperlukan (harus diimplementasikan). someMethod3 adalah opsional - jika kami tidak menerapkan metode ini, kompiler tidak akan memberikan peringatan apa pun.
sumber